#python #loops #keras #model-fitting
#python #циклы #keras #подгонка модели
Вопрос:
Я хочу обучить свою модель для разных размеров пакетов, то есть: [64, 128] Я делаю это с помощью цикла for, как показано ниже
epoch=2
batch_sizes = [128,256]
for i in range(len(batch_sizes)):
history = model.fit(x_train, y_train, batch_sizes[i], epochs=epochs,
callbacks=[early_stopping, chk], validation_data=(x_test, y_test))
для приведенного выше кода моя модель дает следующие результаты:
Epoch 1/2
311/311 [==============================] - 157s 494ms/step - loss: 0.2318 -
f1: 0.0723
Epoch 2/2
311/311 [==============================] - 152s 488ms/step - loss: 0.1402 -
f1: 0.4360
Epoch 1/2
156/156 [==============================] - 137s 877ms/step - loss: 0.1197 -
f1: **0.5450**
Epoch 2/2
156/156 [==============================] - 136s 871ms/step - loss: 0.1132 -
f1: 0.5756
похоже, что модель продолжает обучение после завершения обучения для размера пакета 64, т.Е. Я хочу, чтобы моя модель была обучена для следующей партии с нуля, как я могу это сделать, любезно направьте меня.
p.s: что я пробовал:
epoch=2
batch_sizes = [128,256]
for i in range(len(batch_sizes)):
history = model.fit(x_train, y_train, batch_sizes[i], epochs=epochs,
callbacks=[early_stopping, chk], validation_data=(x_test, y_test))
keras.backend.clear_session()
это также не сработало
Ответ №1:
Вы можете написать функцию для определения модели, и вам нужно будет вызвать ее перед последующими fit
вызовами. Если ваша модель содержится внутри model
, веса обновляются во время обучения, и они остаются такими после вызова fit. Вот почему вам нужно переопределить модель. Это может помочь вам
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np
X = np.random.rand(1000,5)
Y = np.random.rand(1000,1)
def build_model():
model = Sequential()
model.add(Dense(64,input_shape=(X.shape[1],)))
model.add(Dense(Y.shape[1]))
model.compile(loss='mse',optimizer='Adam')
return model
epoch=2
batch_sizes = [128,256]
for i in range(len(batch_sizes)):
model = build_model()
history = model.fit(X, Y, batch_sizes[i], epochs=epoch, verbose=2)
model.save('Model_' str(batch_sizes[i]) '.h5')
Затем результат выглядит следующим образом:
Epoch 1/2
8/8 - 0s - loss: 0.3164
Epoch 2/2
8/8 - 0s - loss: 0.1367
Epoch 1/2
4/4 - 0s - loss: 0.7221
Epoch 2/2
4/4 - 0s - loss: 0.4787