history=model.fit_generator() 为啥 keras 历史是空的?
Posted
技术标签:
【中文标题】history=model.fit_generator() 为啥 keras 历史是空的?【英文标题】:history=model.fit_generator() Why is keras history empty?history=model.fit_generator() 为什么 keras 历史是空的? 【发布时间】:2020-09-25 18:59:38 【问题描述】:我无法从model.fit_generator()
获取历史记录
net_history=densenet_model.fit_generator(
generator=train_loader,
steps_per_epoch=len(train_dataset),
max_queue_size=500,
workers=1,
validation_data=val_loader,
epochs=10,
validation_steps=len(val_dataset),
verbose=0,
callbacks=[checkpointer, tensorboard]
)
print(net_history.history)
print(net_history.history.keys())
结果:
dict_keys([])
但是我可以从model.fit()
获取历史信息
net_history2=densenet_model.fit(
x_train,
y_train,
validation_split=0.3,
epochs=4,
verbose=0,
batch_size=4,
callbacks=[checkpointer, tensorboard]
)
print(net_history2.history)
结果:
'val_loss': [1.0166720993050904, 0.8762002832421633, 0.9079110455290179, 0.8696109705439238],
'val_categorical_crossentropy': [0.8133353590965271, 0.677170991897583, 0.7131518721580505,
0.6792631149291992], 'val_categorical_accuracy': [0.5887850522994995, 0.6355140209197998,
0.5794392228126526, 0.6074766516685486], 'loss': [0.8654926233446067, 0.8416075144219495,
0.8553338176325748, 0.8491003025881192], 'categorical_crossentropy': [0.6599225, 0.6403823,
0.6583931, 0.6564969], 'categorical_accuracy': [0.6396761, 0.659919, 0.5991903, 0.562753]
为什么会这样?
如何从model.fit_generator中获取loss和accuracy信息?
ps:我无法通过日志事件将迭代过程可视化,因为每次我尝试在 tensorboard 中打开它时,浏览器都会卡在“命名空间层次结构查找相似子图”中,然后崩溃...... QAQ
【问题讨论】:
【参考方案1】:你可以坚持使用 model.fit,因为它支持生成器。
对于 TensorBoard,您可能需要稍等片刻(我认为 tensorboard 卡在“命名空间层次结构中找到相似的子图”,但它正在运行并且需要一些时间)。
注意:对于训练和验证步骤,您应该得到等于 trainORval_dataset_size / 批量大小的生成器长度,而不是数据集的长度。您不希望在同一时期重复相同的图像。
steps_per_epoch=len(train_loader)
validation_steps=len(val_loader)
【讨论】:
【参考方案2】:至于为什么会发生这种情况,我只能推测是因为 model.fit_generator 已被弃用,在 TensorFlow 2.2 及更高版本中,您可以只使用 model.fit,因为它现在支持生成器。
来源: https://www.tensorflow.org/api_docs/python/tf/keras/Model#fit_generator
【讨论】:
以上是关于history=model.fit_generator() 为啥 keras 历史是空的?的主要内容,如果未能解决你的问题,请参考以下文章
echo > $HOME/.bash_history && history -c 清空history命令