数据集&repeat问题

来源:4-5 tf.data读取csv文件并与tf.keras结合使用

慕九州7272337

2022-07-20

请教老师几个问题:

  1. 一般公司里深度学习数据集,都是需要手动写代码生成csv或者后面讲的tfrecord文件,才可以继续后面的模型训练么?还有其他什么格式的么?比如txt,excel
  2. 2-7实战回归模型中,像房价预测数据可以从sklearn中直接导入,没有用CSV文件,直接在Import的house数据集使用train_test_split()函数切分数据集,然后后面进行预处理训练模型等操作了。那么house的文件格式是什么样的,为什么不需要制作成标准的csv或者tfrecord文件再训练呢?
  3. 房价预测数据没有用CSV文件,直接在Import的house数据集,因此也不存在读取和解析csv文件了,整个回归模型中就没有使用repeat,在model.fit中含有参数epochs=100,也就是在训练的时候遍历整个数据集100次,虽然没有用repeat(n),n=1,2,3,4…,或者repeat(),但也达到了重复遍历很多次的效果呀,是不是epochs=100相当于repeat(100)?
  4. 4-5节代码是因为读取并解析的文件是csv文件,所以采用repeat的么.
    model.fit函数中也设置参数epochs=100了已经达到了重复遍历很多次的效果呀,为什么还要用repeat()呢
  5. 图片描述
    您是按照上面3个步骤来读取并解析csv文件,目的是生成能够被训练的数据形式,把csv读成tensorflow的dataset。除了您这个方法之外,没有其他步骤简单点的处理csv文件的方法么?
  6. 有直接用pd.read_csv的,您在其他回答中说因为tf.io.decode_csv可以和dataset一起使用,然后可以对内存进行优化,pd.read_csv不可以。pd.read_ecexel是不是也会把文件一下全读进来容易内存爆掉呢?如果防止爆掉需要先把excel转成csv然后再解析么?
  7. 有既像pd.read_csv这样步骤简单明了,又能优化内存的,防止内存爆掉的其他读取csv的方法么?
写回答

1回答

正十七

2022-07-26

  1. 公司里肯定都有自己适合的格式,比如谷歌里都是写成proto+sstable的格式。proto用来将数据表达成类似dict的kv形式,sstable可以用来压缩。另外数据还可以分片,比如1T数据存在1000个文件中等等。因为大部分都是大数据,所以一般不会存在内存中。txt也很少用,因为表达形式比较单一,kv(key value)的形式比较好。

  2. 类似于表格数据吧,存在pandas里。pandas比较适合处理小数据。

  3. fit函数里,我理解有类似重新初始化数据集遍历器的逻辑,所以能遍历数据集多次,产生的效果和repeat差不多

  4. 如3,fit函数里应该是重新初始化了数据集遍历器,初始化到了开头,所以能一遍又一遍的遍历数据。效果和repeat一样

  5. 如1,封装好一些特定的格式后可以写成库,到时候一行代码就能搞定。

  6. pandas适用于小数据,大数据肯定挂,read_csv和read_excel都会,但可能挂的时候的边界有点不一样罢了

  7. 如5和1,google里的sstable,直接一行代码搞定。不在google,就把读取数据自己封装成一个函数,自己调用。写的尽量能复用。下次类似的数据,就可以轻松搞定。tensorflow本质上也是这样一个封装。


1
1
慕九州7272337
非常感谢!
2022-07-26
共1条回复

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程