tensorflow关于2种数据集的分析

[数据] 2024-04-27 圈点553

摘要:数据集两种形式:1是类似“rain_images, train_labels”的;2是直接“image_label_ds”调用方法也有一些区别。而在实际应用中,其实用2更接近使用情况,不用单独再做数据集。

背景:tensorflow对于初学者来说,如果不实际操作一次,很难想像在实际操作中的问题远比教程中多得多。记录整理一下在tensorflow中关于数据集的几点问题。


tensorflow目前已经有好几个版本了,个人感觉不过大致是1.0和2.1这两个版本的区别会特别大。在tensorflow官方的版本中主要有两个比较大的数据集,一个是mnist.npz,另外一个是直接4个文件的train_images,train_labels,test_images,test_labels(这四个文件分别是训练图片,训练图片标识,测试图片集,测试图片标识)。而mnist.npz一个文件中,其实也是包含了这个下标的字典文件。


读取mnist.npx时,读取的代码为:

path="mnist.npx"

with np.load(path, allow_pickle=True) as f:

    x_train, y_train = f['x_train'], f['y_train']

    x_test, y_test = f['x_test'], f['y_test']


这两个不同的数据集是官方也是目前网络上用得特别多的数据集,其实质都是分成了四个文件。分别是训练集,训练集的标识,测试集,测试集的标识。这样做有什么好处呢?只是为了方便大伙测试,免去制作的痛苦,而实际上制作的过程确实是相当的痛苦。


这两个数据集的调用方法是

model.fit(train_images, train_labels,...)


至于这两个训练集的内容就不多介绍了,一个是手写数字,一个是fashion分类。


对现在的tensorflow2.1版本,实际官方介绍提的是2.0版本,其介绍了直接使用图片本身做为数据集(官方只有介绍训练集,没有测试集,其实是一样的)的方法。它是一个分类花的图片集。其制作的思路如下。

在flowers文件夹下创建各类花名的文件夹,并在花名对应的文件夹下加入相对应的花的图片。

然后 读取花名文件夹的名称  做成索引index   做为  训练集的标签集(这个标签集是花名对应的索引值index),读取  花名对应下的图片  和  对应花的名字的索引Index值 制作训练集。

如下示例:

image_ds="依次读取的图片数据"

label_ds=“在顺序上对应image_ds的花名称的索引值index”

image_label_ds = tf.data.Dataset.zip((image_ds, label_ds))


然后打散排序生成ds


调用数据集的方法为:

model.fit(ds,...)


这里只谈到了这个数据库,其实只是训练集和对应的标签集;而测试集也是相似的。


综合总结起来:

数据集两种形式:1是类似“rain_images, train_labels”的;2是直接“image_label_ds”调用方法也有一些区别。

而在实际应用中,其实用2更接近使用情况,不用单独再做数据集。



实际制作数据集确实相当痛苦,如果先有整体数据,然后处理成分类数据,用人工手工分类,那将是一件非常痛苦的事。


数据集  tensorflow  

感谢反馈,已提交成功,审核后即会显示