预测张量流与重复的使用混淆

forecasting tensorflow confused with usage of repeat

我遇到了这个 notebook that covers forecasting. I got it through this article

我对下面的第 2 和第 4 行感到困惑

train_data = tf.data.Dataset.from_tensor_slices((x_train, y_train))
train_data = train_data.cache().shuffle(buffer_size).batch(batch_size).repeat()

val_data = tf.data.Dataset.from_tensor_slices((x_vali, y_vali))
val_data = val_data.batch(batch_size).repeat()

我知道我们正在尝试打乱我们的数据,因为我们不想按串行顺序将数据提供给我们的模型。在进一步阅读时,我意识到最好让 buffer_size 与数据集的大小相同。但我不确定 repeat 在这种情况下在做什么。有人可以解释这里正在做什么以及 repeat 的功能是什么?

我也看了这个,也看到了下面的文字,但还是不清楚。

The following methods in tf.Dataset :

repeat( count=0 ) The method repeats the dataset count number of times.
shuffle( buffer_size, seed=None, reshuffle_each_iteration=None) The method shuffles the samples in the dataset. The buffer_size is the number of samples which are randomized and returned as tf.Dataset.
batch(batch_size,drop_remainder=False) Creates batches of the dataset with batch size given as batch_size which is also the length of the batches.

不向计数参数传递任何内容的重复调用使该数据集无限重复。

在 python 术语中,数据集是 python 可迭代对象的子类。如果你有一个tf.data.Dataset类型的对象ds,那么你可以执行iter(ds)。如果数据集是由 repeat() 生成的,那么它永远不会 运行 出项目,即它永远不会抛出 StopIteration 异常。

在您引用的笔记本中,对 tf.keras.Model.fit() 的调用将参数 100 传递给参数 steps_per_epoch。这意味着数据集应该无限重复,并且 Keras 将暂停训练以每 100 步 运行 验证。

tldr:留在里面。

https://github.com/tensorflow/tensorflow/blob/3f878cff5b698b82eea85db2b60d65a2e320850e/tensorflow/python/data/ops/dataset_ops.py#L134-L3445

https://docs.python.org/3/library/exceptions.html