2017-02-04 45 views
5

Używam modelu sekwencyjnego w Keras. Chciałbym sprawdzić wagę modelu po każdej epoce. Czy mógłbyś wskazać mi, jak to zrobić?Jak sprawdzić wagi po każdym epoc w modelu 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)) 

Z góry dziękuję.

Odpowiedz

1

To, czego szukasz, to funkcja CallBack. Callback to funkcja Keras, która nazywa się powtarzalnie podczas treningu w kluczowych punktach. Może to być po partii, epoce lub całym treningu. Zobacz dokument here dla dokumentu i listę istniejących połączeń zwrotnych.

To, czego potrzebujesz, to niestandardowe wywołanie zwrotne, które można utworzyć za pomocą obiektu 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]) 

powyższy kod powinien wydrukować osadzania ciężary model.layers[0].get_weights() pod koniec każdej epoki. Do ciebie, aby wydrukować ją tam, gdzie chcesz, aby to czytelne, aby zrzucić go do pliku marynowane, ...

nadzieję, że to pomaga

+0

Dziękuję za odpowiedź, ale jeśli chcę zapisać wszystkie ciężary na liście, zamiast ją wydrukować, jak mogę to zrobić? Próbowałem logów ["wag"]. Append (model.layers [0] .get_weights(), ale to nie działa – jimmy15923