Погрузочно-разгрузочные работы модели в Керасе - PullRequest
0 голосов
/ 30 апреля 2019

Я обучил модель, используя вложения слов 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()

Когда я вызываю модель2, она не работает. Сообщение об ошибке:

ValueError: Cannot create group in read only mode.

Я изменил некоторые слои впереди в функции create_model (), и в конечном итоге я хочу обучить модель (используя веса, которые я ранее сохранил) и прогнозировать на тестовом наборе.

Любая помощь будет отличной!

Редактировать: забыл опубликовать часть, в которой компилируется модель. Добавил его в функцию.

1 Ответ

1 голос
/ 30 апреля 2019

Я не понимаю твой код, Вы создаете новую Model, а не compile это и load новую модель, которая стирает вашу модель?

  1. Как правило, вы должны переписать вашу модель с нуля, потому что, как она скомпилирована, это больше не изменчиво. Получив доступ к атрибутам объектов модели / print_summary, вы сможете увидеть архитектуру вашей модели

  2. Каждый весовой коэффициент оптимизирован для данной архитектуры, при этом он не уверен, что использование предварительно обученных весов из другой архитектуры экономит время вычислений, но увеличивает риск переоснащения

...