【问题标题】:tensorflow TFRecord k-hot encodingtensorflow TFRecord k-hot 编码
【发布时间】:2018-05-20 12:15:24
【问题描述】:

我正在尝试按照本教程使用 TFRecord 格式创建我的训练数据集:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/using_your_own_dataset.md 用于 API 检测。

但是,我想使用 k-hot 编码,而不是使用一种热编码。例如,我可以使用 [0 1 0 1 0] 来进行多分类,而不是使用 [0 0 0 1 0] 标签。我想知道如何使用 TFRecord 格式来做到这一点。如果我使用 2-hot 编码,我是否必须创建两个 tf.train.example ? (使用两次相同的边界框坐标)还是有其他方法? (例如使用 'image/object/class/text': dataset_util.bytes_list_feature(classes_text)'image/object/class/text2': dataset_util.bytes_list_feature(classes_text2))

【问题讨论】:

    标签: python tensorflow tfrecord


    【解决方案1】:

    鉴于您有一个标签列表,例如 [0, 1, 2] 和 10 个类,您需要

    def int64_feature(value):
        if type(value) != list:
            value = [value]
        return tf.train.Feature(int64_list=tf.train.Int64List(value=value))
    

    然后你将标签作为特征之一传递给 tf.Example

    'label': int64_feature(label)
    

    之后,当您在训练期间解析数据集时,您可以像这样对标签进行解码:

    tf.reduce_max(tf.one_hot(labels, num_classes, dtype=tf.int32), axis=0)
    

    这给了

    [1 1 1 0 0 0 0 0 0 0]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 2016-12-11
      • 2017-06-07
      相关资源
      最近更新 更多