数据集&repeat问题
来源:4-5 tf.data读取csv文件并与tf.keras结合使用
慕九州7272337
2022-07-20
请教老师几个问题:
- 一般公司里深度学习数据集,都是需要手动写代码生成csv或者后面讲的tfrecord文件,才可以继续后面的模型训练么?还有其他什么格式的么?比如txt,excel
- 2-7实战回归模型中,像房价预测数据可以从sklearn中直接导入,没有用CSV文件,直接在Import的house数据集使用train_test_split()函数切分数据集,然后后面进行预处理训练模型等操作了。那么house的文件格式是什么样的,为什么不需要制作成标准的csv或者tfrecord文件再训练呢?
- 房价预测数据没有用CSV文件,直接在Import的house数据集,因此也不存在读取和解析csv文件了,整个回归模型中就没有使用repeat,在model.fit中含有参数epochs=100,也就是在训练的时候遍历整个数据集100次,虽然没有用repeat(n),n=1,2,3,4…,或者repeat(),但也达到了重复遍历很多次的效果呀,是不是epochs=100相当于repeat(100)?
- 4-5节代码是因为读取并解析的文件是csv文件,所以采用repeat的么.
model.fit函数中也设置参数epochs=100了已经达到了重复遍历很多次的效果呀,为什么还要用repeat()呢
您是按照上面3个步骤来读取并解析csv文件,目的是生成能够被训练的数据形式,把csv读成tensorflow的dataset。除了您这个方法之外,没有其他步骤简单点的处理csv文件的方法么?- 有直接用pd.read_csv的,您在其他回答中说因为tf.io.decode_csv可以和dataset一起使用,然后可以对内存进行优化,pd.read_csv不可以。pd.read_ecexel是不是也会把文件一下全读进来容易内存爆掉呢?如果防止爆掉需要先把excel转成csv然后再解析么?
- 有既像pd.read_csv这样步骤简单明了,又能优化内存的,防止内存爆掉的其他读取csv的方法么?
写回答
1回答
-
公司里肯定都有自己适合的格式,比如谷歌里都是写成proto+sstable的格式。proto用来将数据表达成类似dict的kv形式,sstable可以用来压缩。另外数据还可以分片,比如1T数据存在1000个文件中等等。因为大部分都是大数据,所以一般不会存在内存中。txt也很少用,因为表达形式比较单一,kv(key value)的形式比较好。
类似于表格数据吧,存在pandas里。pandas比较适合处理小数据。
fit函数里,我理解有类似重新初始化数据集遍历器的逻辑,所以能遍历数据集多次,产生的效果和repeat差不多
如3,fit函数里应该是重新初始化了数据集遍历器,初始化到了开头,所以能一遍又一遍的遍历数据。效果和repeat一样
如1,封装好一些特定的格式后可以写成库,到时候一行代码就能搞定。
pandas适用于小数据,大数据肯定挂,read_csv和read_excel都会,但可能挂的时候的边界有点不一样罢了
如5和1,google里的sstable,直接一行代码搞定。不在google,就把读取数据自己封装成一个函数,自己调用。写的尽量能复用。下次类似的数据,就可以轻松搞定。tensorflow本质上也是这样一个封装。
112022-07-26
相似问题