我正在上一门有关Python深度学习的课程,并且只停留在示例的以下几行:
regressor.compile(optimizer = 'adam', loss = 'mean_squared_error')
regressor.fit(X_train, y_train, epochs = 100, batch_size = 32)
根据我知道的定义, 1个纪元=遍历所有训练示例一次以进行一次权重更新。
batch_size
用于优化程序,该优化程序将训练示例分成小批。每个小批量的大小为batch_size
。
我不熟悉亚当优化,但我相信它是GD或Mini batch GD的变体。梯度下降-具有一大批(所有数据),但有多个时期。迷你批次渐变下降-使用多个迷你批次,但只有1个时期。
然后,代码为什么同时具有多个迷你批处理和多个时期? 这段代码中的epoch的含义是否与上面的定义不同?
答案 0 :(得分:1)
假设您有3200个示例来训练模型。然后1个历元=进行3200个训练示例,但如果设置batch_size = 32,则进行100次反向传播。
答案 1 :(得分:1)
尽管其他答案基本上已经为您提供了正确的结果,但我想澄清您在帖子中提出的几点,并加以纠正。
不同术语的(公认的)定义如下。
请注意,您对ADAM的看法是正确的。通常,它被视为香草梯度下降的一种更强大的变体,因为它使用更复杂的启发式算法(一阶导数)来加速和稳定收敛。
答案 2 :(得分:1)
您对时代和 batch_size 的理解似乎是正确的。
下面的精度更高。
一个时期对应于整个训练数据集扫描。可以通过多种方式执行此扫描。
N_examples
个示例,则N_examples/batch_size
个优化迭代对应一个时期。在您的情况下(epochs=100
,batch_size=32
),regressor
将扫描整个数据集100个项目,并以32个大小的微型数据批次(即 Mini-batch模式)。
如果我假设您的数据集大小为N_examples
,则regressor
将执行N_examples/32
模型权重优化迭代每个时期。
因此,对于100个时期:100*N_examples/32
模型权重优化迭代。
总而言之,具有epoch>1
和具有batch_size>1
是兼容的。