Tensorboard AttributeError: 'ModelCheckpoint' object has no attribute 'on_train_batch_begin'
Tensorboard AttributeError: 'ModelCheckpoint' object has no attribute 'on_train_batch_begin'
我目前正在使用 Tensorboard 使用下面的回调,如下所示 。
from keras.callbacks import ModelCheckpoint
CHECKPOINT_FILE_PATH = '/{}_checkpoint.h5'.format(MODEL_NAME)
checkpoint = ModelCheckpoint(CHECKPOINT_FILE_PATH, monitor='val_acc', verbose=1, save_best_only=True, mode='max', period=1)
当我运行 Keras 的密集网络模型时,出现以下错误。我的任何其他模型都没有以这种方式 运行ning Tensorboard 出现任何问题,这使得这个错误非常奇怪。按照这个Github post,官方的解决方案是使用官方的Tensorboard实现;但是,这需要升级到 Tensorflow 2.0,这对我来说并不理想。任何人都知道为什么我会收到此特定 densenet 的以下错误,是否有人知道 workaround/fix?
AttributeError Traceback (most recent call
last) in ()
26 batch_size=32,
27 class_weight=class_weights_dict,
---> 28 callbacks=callbacks_list
29 )
30
2 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/callbacks.py
in _call_batch_hook(self, mode, hook, batch, logs)
245 t_before_callbacks = time.time()
246 for callback in self.callbacks:
--> 247 batch_hook = getattr(callback, hook_name)
248 batch_hook(batch, logs)
249 self._delta_ts[hook_name].append(time.time() - t_before_callbacks)
AttributeError: 'ModelCheckpoint' object has no attribute
'on_train_batch_begin'
密网我运行宁
from tensorflow.keras import layers, Sequential
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.applications.densenet import preprocess_input, DenseNet121
from keras.optimizers import SGD, Adagrad
from keras.utils.np_utils import to_categorical
IMG_SIZE = 256
NUM_CLASSES = 5
NUM_EPOCHS = 100
x_train = np.asarray(x_train)
x_test = np.asarray(x_test)
y_train = to_categorical(y_train, NUM_CLASSES)
y_test = to_categorical(y_test, NUM_CLASSES)
x_train = x_train.reshape(x_train.shape[0], IMG_SIZE, IMG_SIZE, 3)
x_test = x_test.reshape(x_test.shape[0], IMG_SIZE, IMG_SIZE, 3)
densenet = DenseNet121(
include_top=False,
input_shape=(IMG_SIZE, IMG_SIZE, 3)
)
model = Sequential()
model.add(densenet)
model.add(layers.GlobalAveragePooling2D())
model.add(layers.Dense(NUM_CLASSES, activation='softmax'))
model.summary()
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
history = model.fit(x_train,
y_train,
epochs=NUM_EPOCHS,
validation_data=(x_test, y_test),
batch_size=32,
class_weight=class_weights_dict,
callbacks=callbacks_list
)
在您的导入中,您混合了 keras
和 tf.keras
,它们彼此 不兼容 ,因为您会遇到像这样的奇怪错误。
所以一个简单的解决方案是选择 keras
或 tf.keras
,并从该包中导入所有内容,并且永远不要将其与其他包混合。
从 keras
或 tensorflow.keras
进行所有导入
我希望这能解决问题![=12=]
是的,从 keras 和 tensorflow 混合导入
尝试坚持 tensorflow.keras 例如:
from tensorflow.keras.callbacks import EarlyStopping
我替换了这一行
from keras.callbacks import EarlyStopping, ModelCheckpoint
到这一行
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint
我目前正在使用 Tensorboard 使用下面的回调,如下所示
from keras.callbacks import ModelCheckpoint
CHECKPOINT_FILE_PATH = '/{}_checkpoint.h5'.format(MODEL_NAME)
checkpoint = ModelCheckpoint(CHECKPOINT_FILE_PATH, monitor='val_acc', verbose=1, save_best_only=True, mode='max', period=1)
当我运行 Keras 的密集网络模型时,出现以下错误。我的任何其他模型都没有以这种方式 运行ning Tensorboard 出现任何问题,这使得这个错误非常奇怪。按照这个Github post,官方的解决方案是使用官方的Tensorboard实现;但是,这需要升级到 Tensorflow 2.0,这对我来说并不理想。任何人都知道为什么我会收到此特定 densenet 的以下错误,是否有人知道 workaround/fix?
AttributeError Traceback (most recent call last) in () 26 batch_size=32, 27 class_weight=class_weights_dict, ---> 28 callbacks=callbacks_list 29 ) 30
2 frames /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/callbacks.py in _call_batch_hook(self, mode, hook, batch, logs) 245 t_before_callbacks = time.time() 246 for callback in self.callbacks: --> 247 batch_hook = getattr(callback, hook_name) 248 batch_hook(batch, logs) 249 self._delta_ts[hook_name].append(time.time() - t_before_callbacks)
AttributeError: 'ModelCheckpoint' object has no attribute 'on_train_batch_begin'
密网我运行宁
from tensorflow.keras import layers, Sequential
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.applications.densenet import preprocess_input, DenseNet121
from keras.optimizers import SGD, Adagrad
from keras.utils.np_utils import to_categorical
IMG_SIZE = 256
NUM_CLASSES = 5
NUM_EPOCHS = 100
x_train = np.asarray(x_train)
x_test = np.asarray(x_test)
y_train = to_categorical(y_train, NUM_CLASSES)
y_test = to_categorical(y_test, NUM_CLASSES)
x_train = x_train.reshape(x_train.shape[0], IMG_SIZE, IMG_SIZE, 3)
x_test = x_test.reshape(x_test.shape[0], IMG_SIZE, IMG_SIZE, 3)
densenet = DenseNet121(
include_top=False,
input_shape=(IMG_SIZE, IMG_SIZE, 3)
)
model = Sequential()
model.add(densenet)
model.add(layers.GlobalAveragePooling2D())
model.add(layers.Dense(NUM_CLASSES, activation='softmax'))
model.summary()
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
history = model.fit(x_train,
y_train,
epochs=NUM_EPOCHS,
validation_data=(x_test, y_test),
batch_size=32,
class_weight=class_weights_dict,
callbacks=callbacks_list
)
在您的导入中,您混合了 keras
和 tf.keras
,它们彼此 不兼容 ,因为您会遇到像这样的奇怪错误。
所以一个简单的解决方案是选择 keras
或 tf.keras
,并从该包中导入所有内容,并且永远不要将其与其他包混合。
从 keras
或 tensorflow.keras
我希望这能解决问题![=12=]
是的,从 keras 和 tensorflow 混合导入
尝试坚持 tensorflow.keras 例如:
from tensorflow.keras.callbacks import EarlyStopping
我替换了这一行
from keras.callbacks import EarlyStopping, ModelCheckpoint
到这一行
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint