2017-02-04 95 views
5

我在Keras中使用順序模型。我想在每個時代檢查模型的重量。請你指導我如何做到這一點。如何檢查Keras模型中每個epoc後的權重

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

你想要的是一個可以用LambdaCallBack對象創建的自定義CallBack。

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

相關問題