1

Google Cloud ML のIris の例は、次の手順で Tensorflow モデルへの入力テンソルを作成できることを明確に示しています。

  • 作成= 機能名をオブジェクトfeature_setにマッピングする辞書ml.features.FeatureColumn
  • に渡しfeature_setml.Preprocessメタデータ オブジェクトを生成する
  • を呼び出します。これは、そのメタデータ オブジェクトを使用して、エンコードされたトレーニング例を表す Tensor を の機能を表す Tensor の dict にml.features.FeatureMetadata.parse_features変換する Tensor を作成します。tf.Examplefeature_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ます。

4

1 に答える 1

1

Tensorflow には画像の dtype がないため、画像の Tensor の戻り値はサイズ 1 ではなく、画像内のすべてのバイトのサイズです。

Tensorflow は固定長 Tensor で最適に機能しますが、設定サイズの Jpeg は異なるバイナリ長を持つ場合があります。これを回避するには、jpeg に対して返される Tensor の feature_size を (画像の幅) * (画像の高さ) * 8 バイト/ピクセルに設定して、画像を保持するのに十分な大きさにします。target_size が (256, 256) に設定されているため、画像はそのサイズにサイズ変更され、(1 ピクセルあたり 8 バイト) x 256 x 256 = 524288 バイトになります。

これらの Tensor は、decode_jpeg に送信できる必要があります。

それが役立つかどうか教えてください。

于 2016-11-21T22:26:49.280 に答える