繁体   English   中英

重置在Tensorflow 2数据集中实际意味着什么?

[英]What does reset actually mean in Tensorflow 2 dataset?

我正在关注tensorflow 2 Keras 文档 我的模型看起来像这样:

train_dataset = tf.data.Dataset.from_tensor_slices((np.array([_my_cus_func(i) for i in X_train]), y_train))
train_dataset = train_dataset.map(lambda vals,lab: _process_tensors(vals,lab), num_parallel_calls=4)
train_dataset = train_dataset.shuffle(buffer_size=10000)
train_dataset = train_dataset.batch(64,drop_remainder=True)
train_dataset = train_dataset.prefetch(1)
model=get_compiled_model()
model.fit(train_dataset, epochs=100)

文件说

请注意,数据集在每个纪元的末尾都会重置,因此可以重复使用下一个纪元。

如果您只想从此数据集中对特定数量的批次运行训练,则可以传递steps_per_epoch参数,该参数指定在继续下一个纪元之前使用此数据集运行模型的训练步数。

如果这样做,数据集不会在每个纪元的末尾重置,而是我们只是继续绘制下一批。 数据集最终会耗尽数据(除非它是一个无限循环的数据集)。

重置实际意味着什么? tensorflow会在每个纪元后从张量切片读取数据吗? 或者只是重新洗牌并运行map功能? 我想要tensorflow在epoch之后从numpy读取数据并运行_my_cus_func 我宁愿在dataset map or apply api上传递_my_cus_func dataset map or apply api ,但我更喜欢在python列表或numpy数组上执行此操作。

在此上下文中,重置意味着从头开始迭代数据集。 在您的特定情况下,代码缺少repeat()函数。 所以,如果你像这样指定steps_per_epoch参数

model.fit(train_dataset, steps_per_epoch=N, epochs=100)

它将迭代N个步骤的数据集,如果N小于实际的例子数,它将终止训练。 如果N较大,它将完成一个纪元,但在数据耗尽时仍然终止。 如果你添加重复,

train_dataset = train_dataset.shuffle(buffer_size=10000).repeat()

当达到实际的实例数时,它将在数据集上开始新的循环,而不是在新的纪元开始时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM