2017-10-18 54 views
0

我有一個tfrecords文件,將圖像存儲爲字節串。我想將此特性列定義爲tf.feature_column.numeric_column("image", shape=[64, 64], dtype=tf.float32),但由於它不是作爲float_list存儲在tfrecords文件中,所以不起作用。將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.feature_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, ...) 
相關問題