Проблема в том, что model_copy, вероятно, не компилируется после клонирования. На самом деле есть несколько проблем:
Очевидно, что клонирование не копирует функцию потерь, информацию оптимизатора и т. Д.
Перед компиляцией необходимо также построить модель.
Более того, клонирование не копирует вес, превышающий
Так что вам нужно пару дополнительных строк после клонирования. Например, для 10 входных переменных:
model_copy= keras.models.clone_model(model1)
model_copy.build((None, 10)) # replace 10 with number of variables in input layer
model_copy.compile(optimizer='rmsprop', loss='categorical_crossentropy')
model_copy.set_weights(model.get_weights())
Более простой способ 1: загрузка весов из файла
Если я правильно понимаю ваш вопрос, есть более простой способ сделать это. Вам не нужно клонировать модель, просто нужно сохранить old_weights и установить веса в начале цикла. Вы можете просто загрузить веса из файла, как вы делаете.
for _ in range(10):
model1= create_Model()
model1.compile(optimizer='rmsprop', loss='categorical_crossentropy')
model1.load_weights('my_weights')
for j in range(0, image_size):
model1.fit(sample[j], sample_lbl[j])
prediction= model1.predict(sample[j])
Более простой способ 2: загрузка весов из предыдущего get_weights ()
Или, если вы предпочитаете не загружать из файла:
model1= create_Model()
model1.compile(optimizer='rmsprop', loss='categorical_crossentropy')
model1.load_weights('my_weights')
old_weights = model1.get_weights()
for _ in range(10):
model1.set_weights(old_weights)
for j in range(0, image_size):
model1.fit(sample[j], sample_lbl[j])
prediction= model1.predict(sample[j])