ошибка при использовании нескольких обратных вызовов в тензорном потоке - PullRequest
0 голосов
/ 23 апреля 2020

, поэтому я использую CNN, и я пытаюсь использовать два обратных вызова, один для ранней остановки и один для сохранения весов

Мой код выглядит так:

#building model
def build_model():
    model = models.Sequential()
    model.add(layers.InputLayer(input_shape=(100,28)))
    model.add(layers.Dense(28,activation = 'relu'))
    model.add(BatchNormalization(momentum = 0.99))
    model.add(Dropout(0.1))
    model.add(layers.Conv1D(filters=16,kernel_size=3,strides=1,padding='same',activation='relu'))
    model.add(BatchNormalization(momentum = 0.99))
    model.add(Dropout(0.1))
    model.add(layers.Conv1D(filters=32,kernel_size=3,strides=1,padding='same',activation='relu'))
    model.add(BatchNormalization(momentum = 0.99))
    model.add(Dropout(0.1))
    model.add(layers.Conv1D(filters=64,kernel_size=3,strides=1,padding='same',activation='relu'))
    model.add(BatchNormalization(momentum = 0.99))
    model.add(Dropout(0.1))
    model.add(layers.Dense(1, activation = 'linear'))

    model.compile(
        optimizer='adam',
        loss=['mean_squared_error'],
        metrics=[tf.keras.metrics.RootMeanSquaredError()]
    )
    return model

checkpoint_path = r"C:/Users/xatzo/Desktop/fz1.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)
cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_path,
                                                 save_weights_only=True,
                                                 verbose=1)


model = build_model()

print(model.summary)

#train model and output
history = model.fit(
    data1,
    target_fz1,
    epochs=200,
    validation_data=(
        val_d1,
        val_tz1),
    callbacks=[keras.callbacks.EarlyStopping(
        monitor = 'val_loss',
        min_delta=0.00001,
        patience = 5),
        ProgbarLogger(count_mode='samples',stateful_metrics=None)
    ,cp_callback]
)

predict_z1=model.predict(val_d1)

, но когда я запускаю его, я получаю следующую ошибку:

<bound method Network.summary of <keras.engine.sequential.Sequential object at 0x0000013A8D7BF088>>
Train on 733 samples, validate on 366 samples
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-39-53fa487538b4> in <module>
     48         patience = 5),
     49         ProgbarLogger(count_mode='samples',stateful_metrics=None)
---> 50     ,cp_callback]
     51 )
     52 

~\Anaconda3\envs\deeplearning\lib\site-packages\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
   1237                                         steps_per_epoch=steps_per_epoch,
   1238                                         validation_steps=validation_steps,
-> 1239                                         validation_freq=validation_freq)
   1240 
   1241     def evaluate(self,

~\Anaconda3\envs\deeplearning\lib\site-packages\keras\engine\training_arrays.py in fit_loop(model, fit_function, fit_inputs, out_labels, batch_size, epochs, verbose, callbacks, val_function, val_inputs, shuffle, initial_epoch, steps_per_epoch, validation_steps, validation_freq)
    127         'metrics': callback_metrics,
    128     })
--> 129     callbacks._call_begin_hook('train')
    130     callbacks.model.stop_training = False
    131     for cbk in callbacks:

~\Anaconda3\envs\deeplearning\lib\site-packages\keras\callbacks\callbacks.py in _call_begin_hook(self, mode)
    101         """Helper function for on_{train|test|predict}_begin methods."""
    102         if mode == _TRAIN:
--> 103             self.on_train_begin()
    104         elif mode == _TEST:
    105             self.on_test_begin()

~\Anaconda3\envs\deeplearning\lib\site-packages\keras\callbacks\callbacks.py in on_train_begin(self, logs)
    217         """
    218         for callback in self.callbacks:
--> 219             callback.on_train_begin(logs)
    220 
    221     def on_train_end(self, logs=None):

~\Anaconda3\envs\deeplearning\lib\site-packages\tensorflow_core\python\keras\callbacks.py in on_train_begin(self, logs)
    925   def on_train_begin(self, logs=None):
    926     # pylint: disable=protected-access
--> 927     if self.model._in_multi_worker_mode():
    928       # MultiWorkerTrainingState is used to manage the training state needed
    929       # for preemption-recovery of a worker in multi-worker training.

AttributeError: 'Sequential' object has no attribute '_in_multi_worker_mode'

Вот также код со всем моим импортом, на случай, если я пропустил что-то там:

import pandas as pd
import scipy as sp
from scipy import interpolate
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dropout, Dense, Conv2D, MaxPool2D, Flatten
from tensorflow.keras.callbacks import ProgbarLogger
import keras.utils.np_utils as ku
import matplotlib.pyplot as plt
from keras import regularizers
import keras
import keras.models as models
import keras.layers as layers
from keras.layers import Dropout, LeakyReLU
from keras import regularizers
from keras.layers.normalization import BatchNormalization
#from keras.callbacks import ModelCheckpoint
#from tensorflow.keras.callbacks import ModelCheckpoint
import os
import glob
from numpy import genfromtxt
%matplotlib inline

две строки с комментариями пробовали, но получили ту же ошибку

Кто-нибудь знает что-нибудь об этом?

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