2017-02-04 10 views
5

Я использую последовательную модель в Keras. Я бы хотел проверить вес модели после каждой эпохи. Не могли бы вы посоветовать мне, как это сделать.Как проверить вес после каждого эпоса в модели Keras

model = Sequential() 
model.add(Embedding(max_features, 128, dropout=0.2)) 
model.add(LSTM(128, dropout_W=0.2, dropout_U=0.2)) 
model.add(Dense(1)) 
model.add(Activation('sigmoid')) 
model.compile(loss='binary_crossentropy',optimizer='adam',metrics['accuracy']) 
model.fit(X_train, y_train, batch_size=batch_size, nb_epoch=5 validation_data=(X_test, y_test)) 

Заранее спасибо.

ответ

1

Что вы ищете, является функцией CallBack. Обратный вызов - это функция Keras, которая повторяется во время тренировки в ключевых точках. Это может быть после партии, эпохи или всего обучения. См. here для документа и список существующих обратных вызовов.

Что вы хотите - это настраиваемый CallBack, который может быть создан с помощью объекта LambdaCallBack.

from keras.callbacks import LambdaCallback 

model = Sequential() 
model.add(Embedding(max_features, 128, dropout=0.2)) 
model.add(LSTM(128, dropout_W=0.2, dropout_U=0.2)) 
model.add(Dense(1)) 
model.add(Activation('sigmoid')) 

print_weights = LambdaCallback(on_epoch_end=lambda batch, logs: print(model.layers[0].get_weights())) 

model.compile(loss='binary_crossentropy',optimizer='adam',metrics['accuracy']) 
model.fit(X_train, 
      y_train, 
      batch_size=batch_size, 
      nb_epoch=5 validation_data=(X_test, y_test), 
      callbacks = [print_weights]) 

код выше должен напечатать ваши вложения веса model.layers[0].get_weights() в конце каждой эпохи. До вас, чтобы напечатать его там, где вы хотите, чтобы сделать его доступным для чтения, чтобы сбросить его в файл рассол, ...

Надеется, что это помогает

+0

Спасибо за ваш ответ, но если я хочу, чтобы сохранить все веса в списке, а не распечатывать его, как я могу это сделать? Я пробовал журналы ["весы"]. Append (model.layers [0] .get_weights(), но это не работает – jimmy15923