更新到TensorFlow 2.0:Keras中的纪元概念

时间:2019-10-23 23:59:35

标签: python tensorflow keras

我以前在tensorflow中使用Estimator API,并使用了“ max_steps”,即培训期间看到的批次数。 我的数据集是完全合成的并且是无限的,每次都在运行中生成一批全新的图像。 新的Keras API使用“历元”的概念,它对应于整个数据集的传递。如何在keras的“适合”函数中设置“ steps_per_epoch”,“ initial_Epoch”和“ epochs”,以使其对我而言有意义?

谢谢!

2 个答案:

答案 0 :(得分:0)

steps_per_epoch函数中还有一个确切名称为model.fit()的参数,该参数可让您定义所需的步数,该步数等于一个历元。假设当批量大小为steps_per_epoch=4时,您希望4x8 = 32的含义是8。 32表示此处该模型现在将从数据集中看到32个样本。

还有一个initial_epoch参数,其作用与名称中所说的完全一样。

epochs也存在于.fit()中,将占用您想要的历元总数。因此,假设您要训练10个纪元,那么对于每个纪元,模型将看到32个图像样本,而在第10个纪元后,它将10x32= 320

这些所有功能都定义为here

答案 1 :(得分:-1)

以下是为了正确使用Keras而必须了解和理解的常见定义:


  1. 样本:数据集的一个元素。
  2. 批处理:一组N个样本。
  3. epochs:训练所有样本的次数。
  4. steps_per_epoch:此处的步数等于分割的批号。在 另外,值得一提的是批量大小!= batches_number,批处理大小正在转换sample_number的一步。

回答您的其他评论:


keras模型不关心样本长度。例如,模型可以接收相似(无,w,h,c)形状的输入张量。 0轴无是您关心的#samples问题,但您无需关心。

因此无需在keras中指定输入张量的样本大小。

此外,样本数据收集过程可以是动态的,但用于分析的样本始终是固定的。您需要划分开发集和测试集。新收集的样本应在一定的时间段(例如一周或一个月)内添加到开发集和测试集中,并且需要确保收集的样本满足相同的分布。

了解def Input可能会对您有所帮助。