keras读入数据的方式

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

慕姐8158610

2020-05-05

tfrecords_train_set = tfrecords_reader_dataset(
train_tfrecord_filenames, batch_size = batch_size)
这一步读取tfrecord数据,tf2.0中这会把所有的tfrecord文件都读入内存吗,如果读取的数据量非常大的话,内存是放不下的?如果不是全部读入内存,那么在print的时候应该是打印不出来数据的啊,难道只读入take涉及到数据的文件,如果是这样的话,那么tfrecords_reader_dataset函数并不真正出发文件的读取
model.fit(tfrecords_train_set,
validation_data = tfrecords_valid_set,
steps_per_epoch = 11160 // batch_size,
validation_steps = 3870 // batch_size,
epochs = 100,
callbacks = callbacks)
第二个是模型在fit的时候读取数据的方式,这时候是怎么读取的,这时候数据是流式一个batch一个batch的读取吗?在tfrecord文件的读取和模型输入这块的衔接的过程不明白,恳请老师帮忙详细解释下过程

写回答

1回答

正十七

2020-05-07

  1. 不是全部的读入,因为内存可能放不下。而是异步读入,即先读入一部分,然后训练开始后,用过的数据会释放内存,同时dataset会继续读入新的内容。这个异步是dataset内部自己做的。这也是dataset的强大之处。

  2. 相当于是并行的生产者消费者模式,dataset会异步的读入数据,同时fit函数训练模型会消费数据,在整个过程中要保证数据读取不能成为训练的瓶颈。同时内存会够用。

2
2
正十七
回复
weixin_慕丝0226078
1. 是随机还是固定,取决于你有没有设置shuffle。 2. 是的。需要重新读取。
2020-11-30
共2条回复

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

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

1849 学习 · 896 问题

查看课程