У меня есть метод train_model
, который получает объект модели keras в качестве входных данных и обучает его.У меня есть код где-то еще в моем коде, который создает новую модель в каждой итерации и передает ее этому методу.Если я не передам обратный вызов TensorBoard, мой код работает нормально.Однако, когда я передаю обратный вызов TensorBoard, первая сеть обучается, но для второй я получаю эту ошибку:
tenorflow.python.framework.errors_impl.InvalidArgumentError: Вы должны указать значение длятензор-заполнитель 'density_7_target' с плавающей запятой и формой dtype [?,?] [[{{node dens_7_target}} = Placeholderdtype = DT_FLOAT, shape = [?,?], _device = "/ job: localhost / replica: 0 / task:0 / устройство: ЦП: 0 "]]
после вызова метода .fit
.(сеть, которую я строю, состоит из 5 слоев)
и есть более неожиданные варианты поведения: когда я запускаю этот код во второй раз, первая сеть не нуждается в обучении (так как я уже сохранил модельи он просто загрузит это), и вторая сеть обучается без ошибок, но я получаю ту же ошибку для третьей сети.
В этом случае, когда я проверяю графики TensorBoard, я вижу, что первая сетьбыл создан правильно, но вторая сеть имеет в два раза больше слоев, чем должна (как если бы первая модель была загружена первой, а затем была построена вторая сеть).вот мой train_model
метод:
def train_model(model, data, dataname, MODEL_DIR, LOG_DIR, BS, EP, callbacks):
X_train, Y_train, X_test, Y_test = data
if not os.path.exists(MODEL_DIR):
os.makedirs(MODEL_DIR)
model_callback = tf.keras.callbacks.ModelCheckpoint(MODEL_DIR + dataname + '/',
monitor='mse',
verbose=1,
save_weights_only=True)
tb_callback = tf.keras.callbacks.TensorBoard(log_dir=LOG_DIR + dataname,histogram_freq=10)
callbacks += [model_callback, tb_callback]
if not os.path.exists(MODEL_DIR + dataname + '/'):
model.fit(X_train, Y_train, batch_size=BS, epochs=EP, verbose=0, callbacks=callbacks, validation_split=0.2)
validation_split=0.2)
else:
model.load_weights(MODEL_DIR + dataname + '/')
return model
Я сделал все, что мог, и у меня действительно нет идей о том, что не так с моим кодом.
Любая помощь приветствуется.заранее спасибо.