Как загрузить модель из файла HDF5 в Keras?Как загрузить модель из файла HDF5 в Keras?
Что я пробовал:
model = Sequential()
model.add(Dense(64, input_dim=14, init='uniform'))
model.add(LeakyReLU(alpha=0.3))
model.add(BatchNormalization(epsilon=1e-06, mode=0, momentum=0.9, weights=None))
model.add(Dropout(0.5))
model.add(Dense(64, init='uniform'))
model.add(LeakyReLU(alpha=0.3))
model.add(BatchNormalization(epsilon=1e-06, mode=0, momentum=0.9, weights=None))
model.add(Dropout(0.5))
model.add(Dense(2, init='uniform'))
model.add(Activation('softmax'))
sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy', optimizer=sgd)
checkpointer = ModelCheckpoint(filepath="/weights.hdf5", verbose=1, save_best_only=True)
model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2, callbacks=[checkpointer])
Приведенный выше код успешно сохраняет лучшую модель в файл с именем weights.hdf5. То, что я хочу сделать, - это загрузить эту модель. Ниже код показывает, как я пытался сделать так:
model2 = Sequential()
model2.load_weights("/Users/Desktop/SquareSpace/weights.hdf5")
Это ошибка, я получаю:
IndexError Traceback (most recent call last)
<ipython-input-101-ec968f9e95c5> in <module>()
1 model2 = Sequential()
----> 2 model2.load_weights("/Users/Desktop/SquareSpace/weights.hdf5")
/Applications/anaconda/lib/python2.7/site-packages/keras/models.pyc in load_weights(self, filepath)
582 g = f['layer_{}'.format(k)]
583 weights = [g['param_{}'.format(p)] for p in range(g.attrs['nb_params'])]
--> 584 self.layers[k].set_weights(weights)
585 f.close()
586
IndexError: list index out of range
ли модель включает в себя фактические данные по обучению, а также при расчете объема памяти модели? Как вы можете загрузить модель, которая больше, чем ваша доступная память? – user798719
Модель НЕ (явно) включает данные обучения. Вы не можете загрузить модель, которая больше вашей доступной памяти (ну, хорошо, это возможно, но это будет довольно сложно, и вам нужно будет пройти через это самостоятельно ... но если ваша модель слишком велика, чтобы загрузить вас должен (a) получить больше памяти или (b) обучить меньшую модель) –
@MartinThoma Я использую предложенный вами метод. Я пытаюсь получить один слой из загруженной модели и пытаюсь увидеть его вес с помощью: 'кодировщика = autoencoder.layers [0] encoder.get_weights() ' Но я получаю: ' FailedPreconditionError: попытка использовать неинициализированное значение lstm_1/kernel' – shubhamsingh