获取TypeError:为图像输入创建TFRecords

时间:2017-11-17 16:26:21

标签: tensorflow tfrecord

为图像输入创建TFrecords:如下所示

        char_ids_padded, char_ids_unpadded = encode_utf8_string(text)
        print("char_ids_padded:"+str(char_ids_padded))
        print("char_ids_unpadded:"+str(char_ids_unpadded))
        tf_example = tf.train.Example(features=tf.train.Features(feature={
            'image/format': _bytes_feature(b'png'),
            'image/encoded': _bytes_feature(image.tostring()),
            'image/class': _int64_feature(char_ids_padded),
            'image/unpadded_class': _int64_feature(char_ids_unpadded),
            'height': _int64_feature(image.shape[0]),
            'width': _int64_feature(image.shape[1]),
            'orig_width': _int64_feature(image.shape[1]/num_of_views),
            'image/text': _bytes_feature(text)
            }))


def _int64_feature(value):
  return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))

def _bytes_feature(value):
  return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))

char_ids_padded,char_ids_unpadded的输出如下:

char_ids_padded:[47,13,16,13,16,16,16,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

char_ids_unpadded:[47,13,16,13,16,16,16,52]

注意:char_ids_padded是列表格式,类型为 int ,在使用tf.train.Features进行映射时,错误为 TypeError:[47,13,16,13,16, 16,16,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0]类型为" class' list'",但预期之一:(" class' int& #39;",)

1 个答案:

答案 0 :(得分:1)

您已将列表传递给tf.train.Int64List,因此您无需创建包含_int64_feature参数的新列表。也就是说,您应该尝试更改

tf.train.Int64List(value=[value])

tf.train.Int64List(value=value)

_int64_feature函数中。

当我运行以下代码时,它可以工作:

def _int64_feature(value):
    return tf.train.Feature(int64_list=tf.train.Int64List(value=value))

char_ids_padded = [47, 13, 16, 13, 16, 16, 16, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
tf_example = tf.train.Example(features=tf.train.Features(feature={
     'image/class': _int64_feature(char_ids_padded),
}))