web-dev-qa-db-fra.com

Tensorboard AttributeError: l'objet 'ModelCheckpoint' n'a pas d'attribut 'on_train_batch_begin'

J'utilise actuellement Tensorboard en utilisant le rappel ci-dessous comme indiqué par ce SO post comme indiqué ci-dessous.

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)

Lorsque j'exécute le modèle net dense de Keras, j'obtiens l'erreur suivante. Je n'ai eu aucun problème en exécutant Tensorboard de cette manière avec aucun de mes autres modèles, ce qui rend cette erreur très étrange. D'après cela Github post , la solution officielle est d'utiliser l'implémentation officielle de Tensorboard; cependant, cela nécessite une mise à niveau vers Tensorflow 2.0, ce qui n'est pas idéal pour moi. Quelqu'un sait pourquoi j'obtiens l'erreur suivante pour ce densenet spécifique et y a-t-il une solution de contournement/correctif que quelqu'un connaît?

AttributeError Traceback (dernier appel le plus récent) dans () 26 batch_size = 32, 27 class_weight = class_weights_dict, ---> 28 callbacks = callbacks_list 29) 30

2 images /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/callbacks.py dans _call_batch_hook (auto, mode, hook, batch, logs) 245 t_before_callbacks = time.time () 246 pour le rappel dans 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: l'objet 'ModelCheckpoint' n'a pas d'attribut 'on_train_batch_begin'

Le réseau dense que j'utilise

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
                   )
5
user8888

Effectuez toutes les importations depuis keras ou tensorflow.keras

J'espère que cela résoudra le problème!

0
R007