2017-10-18 6 views
0

私は、テクスチャとして画像を格納するtfrecordsファイルを持っています。私はこのためのフィーチャーカラムをtf.feature_column.numeric_column("image", shape=[64, 64], dtype=tf.float32)と定義したいが、それはtfrecordsファイルにfloat_listとして格納されていないので、これは動作しない。tfrecordsの生のバイトをtf.feature_column.numeric_columnの機能にデコードします。

次に、私が定義したnumeric_columnのnormalizer_fn引数を使用しようとしました。

def decode(image_bytestring): 
    img = tf.reshape(tf.decode_raw(image_bytestring, tf.uint8), [28, 28]) 
    img = tf.cast(img, tf.float32) 
    return img 

... 

examples = tf.parse_example(
      serialized_batch, 
      tf.feature_column.make_parse_example_spec(feature_columns)) 

最初の問題は、しかし、このfeature_columnによって生成されたパーススペックFixedLenFeature(shape=(28, 28), dtype=tf.float32, default_value=None)は、それが実際にエラーが発生した文字列として保存されているときのfloat32のために解析すると言うことです。したがって、デコード機能は使用されません。

代わりに、tf.fature_columnを使用してtfrecordにfloat_listとしてイメージを格納する以外に方法がありますか?

静的型システムのように見えますが、マッピング関数から正しい型のフィーチャを保証するのがいいでしょう。

答えて

1

多分、画像を文字列バイトとして保存し、一般的な方法で画像を読むことができますか?

feature_map = { 'image': tf.FixedLenFeature([], dtype=tf.string,default_value='') } 
features = tf.parse_single_example(example_serialized, feature_map) 
image_buffer = features['image'] 
image = tf.image.decode_image(image_buffer, ...) 
関連する問題