python - TensorFlow 输入生成器用完了数据
问题描述
所以我试图在我的 Jupyter 中实现这个kaggle 代码来测试我的笔记本电脑的性能。对代码进行了一些修改以适应我的环境版本:
#from scipy.ndimage import imread
from imageio import imread
任何帮助或建议表示赞赏。
解决方案
您指定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()
命令提供无限数据生成器时指定,如果您有有限数据则不需要指定。