python - Tensorflow 2.0 : Can I change the settings on a Tf. data.Dataset——特别是 `repeat()` 功能?

标签 python tensorflow

我有一个从一些 pandas 数据创建的 tensorflow 2.0 tf.data.Dataset 。现在我想更改数据集的设置,但它似乎不允许我这样做。举个例子,我想将数据集上的 .repeat() 参数从无限重复更改为仅重复 1 次。但是当我尝试进行此更改时,数据集不接受更改。

这是一个包含一些代码的示例。该函数取自 TF 网站上的 Tensorflow 教程之一。

URL = 'https://storage.googleapis.com/applied-dl/heart.csv'
df = pd.read_csv(URL)

def df_to_dataset(dataframe, shuffle=True, batch_size=32):
    dataframe = dataframe.copy()
    labels = dataframe.pop('target')
    ds = tf.data.Dataset.from_tensor_slices((dict(dataframe), labels))
    if shuffle:
        ds = ds.shuffle(buffer_size=len(dataframe))
    ds = ds.batch(batch_size).repeat() # <-- NOTICE THE INFINITE REPEAT
    return ds

train_ds = df_to_dataset(df)
train_ds.repeat(1) # <-- TRYING TO CHANGE TO A FIXED NUMBER OF REPETITIONS

因此,我尝试更改数据集上的重复次数,但这会导致数据集仍然永远重复。就像如果我将数据集设置为无限重复,然后重复 1 次,我最终会得到一个无限重复的数据集,但重复 1 次——这与无限重复相同。

我想对于数据集的其他特征(例如批处理数等)可能也存在相同的行为。

有没有办法重置数据集的行为?

最佳答案

我认为这是预期的行为。一旦它是一个无限重复的数据集,再重复一次仍然会产生一个具有无限示例的数据集。

您可能可以执行dataset.take(count),其中count是等于原始示例的批处理数的数字,前提是您有良好的洗牌能力您的数据。

关于python - Tensorflow 2.0 : Can I change the settings on a Tf. data.Dataset——特别是 `repeat()` 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59182162/

相关文章:

python - 如何使用漂亮的 soup-python 检索图像的最大尺寸

python - 如何捕获 python 中所有索引超出范围的错误?

python - 在运行 fit_generator 时,可以在training_data_generator 中运行 "With tf.Session as sess:"吗?

python - 数据集形状不匹配 Conv1D 输入层

tensorflow - PyCaret ValueError - 单元格为空

python-3.x - ImportError : libcudnn. so.7:无法打开共享对象文件:没有这样的文件或目录

python - 有没有办法制作虚拟变量来计算出现次数?

python - python 从模块导入哪些属性?

python - 如何在 Python 中以编程方式提供使用 Popen 运行的命令输入?

tensorflow - 如何在CNN中安排不同的层