Как мне использовать pickle в этом фрагменте кода? - PullRequest
0 голосов
/ 11 июля 2019

У меня есть простой фрагмент кода для обучения модели, но когда я использую pickle, чтобы сохранить модель для будущего использования, он дает мне сообщение об ошибке:

cannot pickle thread.LOCK objects

Я использовал рассол в нескольких форматах, но он выдает ту же ошибку.

import pickle

model = keras.Sequential([
    keras.layers.Dense(SHAPE, input_shape=(SHAPE,)),
    keras.layers.Dense(300, activation='sigmoid'),
    keras.layers.Dense(10, activation='softmax')
])


#******************    COMPILING THE MODE        *****************
LEARNING_RATE = 0.0005
model.compile(optimizer=keras.optimizers.Adam(lr=LEARNING_RATE),
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy']              
             )

# ***********      TRAINING THE MODEL   **********
EPOCHS = 20
BATCH_SIZE=50

history_original_data = model.fit(X_original_train_images, y_original_train_labels, epochs=EPOCHS, batch_size=BATCH_SIZE) 
hist_original=history_original_data.history


### PICKLE TO SAVE THE MODEL TO BE USED WITHOU PRO-TRAINING IT
pickname ="SequentialNeuroNetwork.pkl"
PickleSeq = open(pickname, 'wb')
pickle.dump(model, PickleSeq)
PickleSeq.close()

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

1 Ответ

0 голосов
/ 11 июля 2019

Какую версию керас вы используете? Я почти уверен, что старые версии не поддерживают pickle.

В качестве альтернативы, рекомендуется использовать model.save() для сохранения ваших моделей в кератах. Как указано на странице FAQ для кератов:

Вы можете использовать model.save (filepath), чтобы сохранить модель Keras в одну Файл HDF5, который будет содержать:

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

Затем вы можете использовать keras.models.load_model(filepath), чтобы восстановить твоя модель load_model также позаботится о компиляции модели используя сохраненную конфигурацию обучения (если модель никогда не была компилируется в первую очередь).

Источник: https://keras.io/getting-started/faq/#how-can-i-save-a-keras-model

...