在一个纪元的64次64个时期内训练Keras模型之间是否有任何差异。
在这种情况下,渐变如何工作?他们如何保留预览操作的历史以调整动力?
1)
model.fit(X, y, batch_size=64, epochs=64, verbose=False)
2)
for i in range(64):
verbose = (i % 16) == 0
if verbose:
print(i, end='')
model.fit(X, y, batch_size=64, epochs=1, verbose=verbose)
答案 0 :(得分:0)
这两者之间没有重大差异,因为
Model.fit()
正在内部运行_fit_loop
方法获取时期数(keras/engine/training.py
处的源代码),所以它就像......之间的区别......
for i in range(64):
j += 1
......和......
for i in range(64):
for k in range(1):
j += 1
但是他们仍然不是完全等同于因为除了训练本身之外keras所做的事情:
model.history
)失去了训练的历史。如果您想检查学习曲线(通常是这样),您必须手动维护。X
和y
在循环之前都已标准化(请参阅Model._standardize_user_data
方法)。在某些情况下,标准化的开销可以与一个时代的培训相媲美,在这种情况下,您可能会减慢这一过程。顺便说一下,如果您只是想在每个纪元之前或之后打印一些内容,请使用keras callbacks,例如on_train_end()
回调方法。