Tensorflow 是否只使用一种热编码来存储标签?

Does Tensorflow use only one hot encoding to store labels?

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

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 下,并从现有数据集构建图像数据集作为存储在文件夹下的图像(其中文件夹名称是标签):https://github.com/tensorflow/models/blob/master/research/inception/inception/data/build_image_data.py

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

你必须 one-hot 编码是因为网络架构要求你这样做,而不是因为它是 Tensorflow 的要求。该网络是一个 N-class class 化器,因此最后一层每个 class 将有一个神经元,您将训练网络以激活与 class 匹配的神经元样品属于。 one-hot 编码标签是这样做的第一步。

关于人类可读的标签,您所指的代码位于 _find_image_files function, which in turn is used by _process_dataset to transform the dataset from a set of folders to a set TfRecord files, which are a convenient input format type for Tensorflow

人类可读的标签字符串作为特征包含在 tfrecord 文件中的 Examples 中作为 'extra'(可能是为了简化训练过程中中间结果的可视化),它不是对于数据集来说是绝对必要的,不会以任何方式用于网络参数的实际优化。