Я создал LSTM с Keras API.Теперь я сталкиваюсь с проблемой, пытаясь проверить в ней разные значения (например, скорость обучения).Каждый раз, когда я меняю свои значения и определяю новую модель, каким-то образом модель занимает все больше и больше времени, пока обучение не начнется, загрузка ЦП во время ожидания будет на уровне 100%.Я делаю что-то не так, чтобы старшая учебная сессия повлияла на новые модели?
Мой код структурирован следующим образом, в одном файле я называю оценку с другими значениями и многими итерациями, например:
for i in range(0, 100):
acc = model.create(xtrain, ytrain, hidden_units=hidden_size, batch_size=batch_size, learning_rate=learning_rate, l2_reg=l2_reg)
модель - это другой файл.Там я использую переданные значения для обучения новой модели и возвращаю точность, чтобы найти наилучший размер партии и т. Д. Код для создания модели выглядит примерно так:
def create(xtrain, ytrain, hidden_units, batch_size, learning_rate, l2_reg):
# defining some layers from input to output
# example: input = Input(shape=(20,)) ...
# creating the model
model = Model(inputs=[input], output=[outputs])
model.compile(optimizer='Adam', loss='binary_crossentropy', metrics=['acc'])
# calling model.fit
es = EarlyStopping(monitor='val_loss', mode='min', patience=4, verbose=1)
model.fit(xtrain, ytrain, epochs=100, batch_size=batch_size, validation_data=(some_xval_data, some_yval_data), callbacks=[es])
## In the end I evaluate the model on unseen data and return the accuracy
loss, acc = model.evaluate(x_testdata, y_testdata, batch_size=batch_size)
return acc
Теперь каждый раз, когда модель начинает тренироватьсясценарий печатает:
Epoch 1/100
При первых оценочных вызовах модель мгновенно начинает тренироваться, и я вижу время, необходимое для каждого шага.Но через некоторое время, после печати «Эпохи 1/100», внезапно начинается время, пока не начнется тренировка.И время увеличивается от звонка к звонку.Пока он ожидает начала обучения, я могу заметить, что загрузка моего процессора в это время составляет 100%.
Так что, я ошибаюсь при вызове метода каждый раз снова?Есть ли какой-то процесс там старых вызовов "создать" эффект более новых?Я просто надеюсь, что старое обучение не влияет на новое обучение в моей структуре кода?