, поэтому я использую 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
две строки с комментариями пробовали, но получили ту же ошибку
Кто-нибудь знает что-нибудь об этом?