Tensorflow是否仅使用一个热编码来存储标签?

时间:2017-11-30 10:20:57

标签: python tensorflow one-hot-encoding tensorflow-datasets

我刚开始使用Tensorflow,Caffe以高效的方式对数据进行了超级实用的阅读,但是使用Tensorflow我发现我必须自己编写数据加载过程,创建TFRecords,批处理,多重威胁,处理那些线程等。所以我从一个例子开始,因为他们处理读取数据的部分。我是Tensorflow的新手,也是Python的新手,所以我觉得我不明白这个部分到底发生了什么(我的意思是它将标签的大小扩展到label_index *没有文件 - 但是为什么呢?它是否为标签创建了一个热门编码?我们必须这样做吗?为什么它不会因为每个文件都有标签而扩展长度或文件的数量?Thx。

labels.extend([label_index] * len(filenames))
texts.extend([text] * len(filenames))
filenames.extend(filenames)

整个代码在这里:https://github.com/tensorflow/models/tree/master/research/inception

提到的部分位于data / build_image_data.py下,并将现有数据集中的图像数据集构建为存储在文件夹下的图像(其中foldername是标签):https://github.com/tensorflow/models/blob/master/research/inception/inception/data/build_image_data.py

1 个答案:

答案 0 :(得分:1)

将我们在评论中讨论的内容放在一起:

您必须进行单热编码,因为网络架构需要您,而不是因为它是Tensorflow的需求。网络是一个N级分类器,因此最后一层每个类将有一个神经元,你将训练网络激活匹配样本所属类的神经元。对标签进行单热编码是执行此操作的第一步。

关于人类可读的标签,您所引用的代码位于_find_image_files函数中,而_process_dataset函数又将数据集从一组文件夹转换为设置TfRecord个文件,convenient input format type for Tensorflow

人类可读的标签字符串作为特征包含在tfrecord文件内的Example内作为“额外”(可能是为了简化培训期间中间结果的可视化),对于数据集,不会以任何方式用于实际优化网络参数。