Пользовательские обратные вызовы TensorFlow Keras on_test_begin не переопределяет себя - PullRequest
3 голосов
/ 08 июля 2019

Я пытаюсь создать пользовательский обратный вызов, который активируется в начале и конце частей обучения и проверки при вызове model.fit (...)

Часть обучения (on_train_begin / on_train_end)работает отлично, но часть тестирования (on_test_begin / on_test_end) не вызывается.В PyCharm он даже не показывает методы как уже существующие.Для поездов я получаю знак переопределения слева, но не для тестовых.

Как я могу создать собственный обратный вызов, который будет активирован во время проверки?Я использую TensorFlow 1.13 (не уверен, что это что-то меняет).

Я хочу сделать это, чтобы иметь возможность записывать время выполнения обучения и время выполнения проверки.

Я следовал инструкциям официального сайта TensorFlow:

https://www.tensorflow.org/beta/guide/keras/custom_callback

Я также нашел методы on_test_begin и on_test_end на официальном сайте:

https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/TensorBoard

class TimeHistory(tf.keras.callbacks.Callback):
    def on_test_begin(slef,logs=None):
        print('testing begins')
    def on_test_end(selfs,logs=None):
        print('testing ends')
    def on_train_begin(self, logs=None):
        print("training begins")
    def on_train_end(self, logs=None):
        print('training ends')

def creationModeleMLP(nbHiddenLayers,nbPerceptrons,nbEpochs,learningRate,myBatchSize,currentFold):
    model = tf.keras.models.Sequential()
    #ajoute le input layer
    model.add(tf.keras.layers.Flatten(input_shape=(76,)))
    #ajoute les hidden layers
    for i in range(nbHiddenLayers):
        model.add(tf.keras.layers.Dense(nbPerceptrons, activation=tf.nn.relu))
    #ajoute le output layer
    model.add(tf.keras.layers.Dense(2, activation=tf.nn.softmax))
    model.compile(optimizer=tf.keras.optimizers.Adam(lr=learningRate),
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])
    #entraine le modele
    timeHistory = TimeHistory()
    histoire = model.fit(vectPrimTrain[currentFold], typeTrain[currentFold], batch_size=myBatchSize, epochs=nbEpochs,
              callbacks=[tensorboard,timeHistory], validation_data=(vectPrimTest[currentFold],typeTest[currentFold]))

Я ожидаю, что метод on_test_begin и метод on_test_end будут вызваны в начале проверки.

Спасибо

1 Ответ

1 голос
/ 08 июля 2019

Методы on_test_* и on_predict_* были добавлены в тензор потока 1.14+. Убедитесь, что у вас есть tenorflow 1.14 или тензор потока 2, чтобы можно было их использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...