Tensorboard AttributeError: 'ModelCheckpoint' 对象没有属性 'on_train_batch_begin'

use*_*888 10 python keras tensorflow tensorboard

我目前使用Tensorboard使用经本所概述的下方回调SO后如下图所示。

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)
Run Code Online (Sandbox Code Playgroud)

当我运行 Keras 的密集网络模型时,出现以下错误。我在使用我的任何其他模型以这种方式运行 Tensorboard 时没有遇到任何问题,这使得这个错误非常奇怪。根据这个Github 帖子,官方的解决方案是使用官方的 Tensorboard 实现;但是,这需要升级到 Tensorflow 2.0,这对我来说并不理想。任何人都知道为什么我会收到此特定密集网的以下错误,并且是否有有人知道的解决方法/修复方法?

AttributeError Traceback(最近一次调用最后一次) in () 26 batch_size=32, 27 class_weight=class_weights_dict, ---> 28 callbacks=callbacks_list 29 ) 30

2 帧 /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 用于回调在 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' 对象没有属性 '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
                   )
Run Code Online (Sandbox Code Playgroud)

Mat*_*gro 24

在您的导入中,您正在混合kerastf.keras,它们彼此不兼容,因为您会遇到这些奇怪的错误。

所以一个简单的解决方案是选择kerasor tf.keras,并从该包中进行所有导入,并且永远不要将它与另一个混合。