簡體   English   中英

Keras中模型的麻煩加載權重

[英]Trouble Loading Weights of a model in Keras

我已經使用GloVe詞嵌入訓練了模型,並節省了模型的體系結構和權重。 我想對模型網絡進行一些小的更改,然后再次訓練模型。 這是我的代碼:

#Load back model, change architecture, train, predict
from keras import regularizers
from keras import layers
from keras.models import load_model

def create_model():
  model = Sequential()
  model.add(Embedding(max_fatures, embed_dim,input_length = X_train.shape[1]))
  model.add(Bidirectional(LSTM(150, return_sequences=True, dropout= 0.1, recurrent_dropout=0.1)))
  model.add(GlobalMaxPool1D())
  model.add(Dense(50, activation="relu"))
  model.add(Dropout(0.1))
  model.add(Dense(6, activation="sigmoid"))

  #Load GloVe
  model.layers[0].set_weights([embedding_matrix])
  model.layers[0].trainable = False
  model = load_model('/content/model_num2.h5')
  model.fit(X_train,y_train, nb_epoch=2, batch_size=32, show_accuracy=True, validation_split=0.1, verbose=2)
  return(model)

model2 = create_model()

當我調用model2時,它失敗了。 錯誤消息是:

ValueError: Cannot create group in read only mode.

我在create_model()函數中更改了前面的某些層,最終我想訓練模型(使用之前保存的權重)並在測試集上進行預測。

任何幫助將是巨大的!

編輯:忘記發布正在其中編譯模型的部分。 在功能中添加了它。

我不理解您的代碼,您創建的新Model不會compileload新模型,而是會刪除您的模型嗎?

  1. 通常,您應該從頭開始重寫模型,因為在編譯模型時,它不再可變。 通過訪問模型對象的屬性/ print_summary您可以查看模型的體系結構

  2. 每個權重都針對給定的體系結構進行了優化,不能確保使用來自另一個體系結構的預訓練權重可以節省計算時間,但會增加過度擬合的風險

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM