Keras 回调 AttributeError:“ModelCheckpoint”对象没有属性“_implements_train_batch_hooks”
Posted
技术标签:
【中文标题】Keras 回调 AttributeError:“ModelCheckpoint”对象没有属性“_implements_train_batch_hooks”【英文标题】:Keras callback AttributeError: 'ModelCheckpoint' object has no attribute '_implements_train_batch_hooks' 【发布时间】:2020-10-08 18:09:38 【问题描述】:我正在使用 Keras(带有 TensorFlow 后端)来实现神经网络,并且只想保存在训练期间最大限度地减少验证集损失的模型。为此,我实例化了一个 ModelCheckpoint 并在调用模型的 fit 方法时传递它。但是,当我这样做时,我收到以下错误:“AttributeError: 'ModelCheckpoint' object has no attribute '_implements_train_batch_hooks'
”。我在网上找到的最接近我的问题的是this post 有类似的错误,问题来自keras
和tf.keras
的混合模块,但这不是我的情况,因为我的所有模块都是从@987654325 导入的@。我一直在网上和 Keras 文档中寻找一段时间,但找不到任何可以解释这个错误的东西。以下是与问题最相关的代码部分:
导入模块:
from keras.models import Sequential
from keras.layers import Embedding, Conv1D, Dense, Dropout, GlobalMaxPool1D, Concatenate
from keras.callbacks import ModelCheckpoint
ModelCheckpoint 实例化、模型编译和拟合方法调用:
checkpoint = ModelCheckpoint('../model_best.h5', monitor='val_loss', verbose=1, save_best_only=True, mode='min')
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
history = model.fit(x_train, y_train,
epochs = 10, batch_size = 64,
validation_data = (x_val, y_val),
callbacks = [checkpoint])
...这里是完整的 Traceback:
Traceback (most recent call last):
File "/Users/thisuser/thisrepo/classifier.py", line 39, in <module>
callbacks = [checkpoint])
File "/Users/thisuser/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py", line 66, in _method_wrapper
return method(self, *args, **kwargs)
File "/Users/thisuser/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py", line 826, in fit
steps=data_handler.inferred_steps)
File "/Users/thisuser/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow/python/keras/callbacks.py", line 231, in __init__
cb._implements_train_batch_hooks() for cb in self.callbacks)
File "/Users/thisuser/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow/python/keras/callbacks.py", line 231, in <genexpr>
cb._implements_train_batch_hooks() for cb in self.callbacks)
AttributeError: 'ModelCheckpoint' object has no attribute '_implements_train_batch_hooks'
我使用的版本是:
Python:3.7.7 Keras:2.3.0-tf有谁知道可能导致问题的原因?如果需要,我可以稍微修改我的代码以在此处提供所有内容,以便它可以重现。提前感谢您的帮助!
【问题讨论】:
【参考方案1】:我最近也遇到了这个问题。
我发现了什么:最近 keras 或 tensorflow 版本是updated by developers,这导致了问题。
解决方案:由于keras的开发者要求大家切换到tf.keras版本,所以需要替换掉你的代码import section。
发件人:
import keras
收件人:
import tensorflow.keras as keras
之后一切都对我有用。
【讨论】:
【参考方案2】:替换: 从 keras.callbacks 导入 ModelCheckpoint 到: 从 tensorflow.keras.callbacks 导入模型检查点
【讨论】:
以上是关于Keras 回调 AttributeError:“ModelCheckpoint”对象没有属性“_implements_train_batch_hooks”的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:模块'keras'没有属性'initializers'
AttributeError:模块 'keras.utils' 没有属性 'Sequence'
如何修复 AttributeError:模块 'tensorflow' 没有属性 'keras'?
AttributeError:无法导入 keras 和分割模型
AttributeError:模块'tensorflow_core.python.keras.api._v2.keras.activations'没有属性'swish'