Google Cloud ML 的Iris 示例清楚地表明,我可以通过以下步骤为 Tensorflow 模型创建输入张量:
- Create
feature_set
= 将特征名称映射到ml.features.FeatureColumn
对象的字典 - 传入
feature_set
生成ml.Preprocess
元数据对象 - 调用
ml.features.FeatureMetadata.parse_features
,它使用该元数据对象创建一个张量,该张量将表示tf.Example
编码训练示例的张量转换为表示 中特征的张量字典feature_set
。
但是,当我ml.features.ImageFeatureColumn
在我的feature_set
. 特别是,FeatureMetadata.parse_features
为我的图像特征生成一个形状错误的张量。正如 的返回值所定义的ImageFeatureColumn.transform
,图像特征由一个标量 JPEG 编码的字符串组成,这表明相应的张量应该是 形状(BATCH_SIZE, 1)
。但是FeatureMetadata.parse_features
给了我一个形状的张量(BATCH_SIZE, ImageFeatureColumn.feature_size > 1)
。
这使我无法调用tf.image.decode_jpeg
该张量。无论我采用什么柔道来尝试使该功能正常工作,我都会收到以下错误:
ValueError:无法将具有 524288 个元素的张量重塑为 shape ()(1 个元素)
ImageFeatureColumn.feature_size
当我将(或基于此值生成的元数据)更改为 1时,此错误消失。
您可以运行以下脚本来查看此错误: http: //pastebin.com/kHjqgp0r
(运行不带参数的脚本以查看错误。带参数运行它--hack
以查看我在脚本中所做的修复工作。)
这是一个错误吗?
顺便说一句,这是在 0.1.7-alpha 版本上google.cloud.ml
。