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 历史是空的?的主要内容,如果未能解决你的问题,请参考以下文章

window.history

history.back()

echo > $HOME/.bash_history && history -c 清空history命令

history.go()和history.back()的区别是什么

History 对象

history版本号怎么查看