Google Cloud ML のIris の例は、次の手順で Tensorflow モデルへの入力テンソルを作成できることを明確に示しています。
- 作成= 機能名をオブジェクト
feature_set
にマッピングする辞書ml.features.FeatureColumn
- に渡し
feature_set
てml.Preprocess
メタデータ オブジェクトを生成する - を呼び出します。これは、そのメタデータ オブジェクトを使用して、エンコードされたトレーニング例を表す Tensor を の機能を表す Tensor の dict に
ml.features.FeatureMetadata.parse_features
変換する Tensor を作成します。tf.Example
feature_set
ml.features.ImageFeatureColumn
ただし、に を含めると、これは機能しませんfeature_set
。特に、FeatureMetadata.parse_features
画像特徴に対して間違った形状のテンソルを生成します。の戻り値で定義されているようImageFeatureColumn.transform
に、画像の特徴は JPEG でエンコードされたスカラー文字列で構成され、対応する Tensor が shape であることを示唆してい(BATCH_SIZE, 1)
ます。しかしFeatureMetadata.parse_features
、 shape の Tensor が得られます(BATCH_SIZE, ImageFeatureColumn.feature_size > 1)
。
これによりtf.image.decode_jpeg
、その Tensor を呼び出すことができなくなります。関数を機能させるためにどのような柔道を採用しても、次のエラーが発生します。
ValueError: 524288 個の要素を持つテンソルを形 () (1 要素) に変更することはできません
ImageFeatureColumn.feature_size
(またはこの値に基づいて生成されたメタデータ) を 1に変更すると、このエラーは表示されなくなります。
次のスクリプトを実行すると、このエラーを確認できます: http://pastebin.com/kHjqgp0r
(引数なしでスクリプトを実行して、エラーを確認します。引数を指定して実行し--hack
、スクリプトで行った修正が機能したことを確認します。)
これはバグですか?
ところで、これは のバージョン 0.1.7-alpha にありgoogle.cloud.ml
ます。