首页 > 解决方案 > TensorFlow 输入生成器用完了数据

问题描述

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

#from scipy.ndimage import imread 
from imageio import imread

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

任何帮助或建议表示赞赏。

标签: pythontensorflowjupytertensorflow2.0kaggle

解决方案


您指定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()命令提供无限数据生成器时指定,如果您有有限数据则不需要指定。


推荐阅读