【问题标题】:Tensorflow input generator ran out of dataTensorFlow 输入生成器用完了数据
【发布时间】:2020-12-28 12:20:51
【问题描述】:

所以我试图在我的 Jupyter 中实现这个 kaggle code 来测试我的笔记本电脑的性能。 对代码进行了一些修改以适应我的环境版本:

#from scipy.ndimage import imread 
from imageio import imread

在块 [11] 上,我收到如下错误

感谢任何帮助或建议。

【问题讨论】:

  • x_train和y_train的形状是什么?
  • (1161, 150, 150, 3) 和 (1161, 10) 分别为@AniketBote

标签: python tensorflow jupyter tensorflow2.0 kaggle


【解决方案1】:

您错误地指定了step_per_epoch

steps_per_epoch 应该等于

steps_per_epoch = ceil(number_of_samples / batch_size)

根据你的情况

steps_per_epoch = ceil(1161 / 16) = ceil(72.56) = 73

尝试指定steps_per_epoch = 73

您的全部数据在 73 个步骤中用尽。现在,如果你指定steps_per_epoch 任何高于 73 即 74

没有可用的数据。因此你得到input generator ran out of data

更多信息: 模型训练包括前向传播和后向传播两部分。

1 train step = 1 forward pass + 1 backward pass

在单个批次上计算单个训练步骤(1 个前向传递 + 1 个后向传递)。

因此,如果您有 100 样本并且您的批量大小为 10
您的模型将有 10 个训练步骤。

Epoch:Epoch 被定义为对数据集的完整迭代。 因此,要让您的模型完全迭代 100 个样本的数据集,它应该经过 10 个训练步骤。

这个火车步骤不过是steps_per_epoch

steps_per_epoch 参数通常在您为fit() 命令提供无限数据生成器时指定,如果您有有限数据则不需要指定。

【讨论】:

  • 是的,它有效,但有 2 个问题。为什么steps_per_epoch = ceil(number_of_samples / batch_size)?有什么可以参考的吗?它引发了另一个问题PermissionDeniedError: Failed to create a directory: .; Permission denied [Op:MergeV2Checkpoints]? @Aniket 博特
  • 有什么问题?我将相应地更新答案以及steps_per_epoch 上的信息。
  • 我已经用steps_per_epoch 的更多信息更新了答案。你也可以看到this。该问题很可能是由于您指定的回调中的错误。尝试删除回调,看看它是否有效。
猜你喜欢
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 2018-03-28
相关资源
最近更新 更多