0

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

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

4

1 回答 1

1

汇总我们在评论中讨论的内容:

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

关于人类可读的标签,您所指的代码位于_find_image_files函数中,该函数又用于_process_dataset将数据集从一组文件夹转换为一组TfRecord文件,这是Tensorflow 的一种方便的输入格式类型

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

于 2017-11-30T15:20:17.320 回答