【问题标题】:Getting TypeError: While Creating TFRecords for Image input获取 TypeError:为图像输入创建 TFRecords
【发布时间】:2018-05-01 11:52:36
【问题描述】:

为图像输入创建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, 0] 的类型为“class 'list'”,但预期为以下之一:("class 'int'",)

【问题讨论】:

    标签: tensorflow tfrecord


    【解决方案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),
    }))
    

    【讨论】:

    • 我试过给定 tf.train.Int64List(value=value),还是报同样的错误
    • 我更新了我的答案。当您执行该代码时,它对您有用吗?
    • 对不起,我的错误,它现在可以工作了..非常感谢
    猜你喜欢
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多