TypeError: невозможно выбрать объекты _thread.lock при выгрузке модели nn4_small2_pretrained из проекта Keras-Openface - PullRequest
0 голосов
/ 07 июня 2018

Я пытался реализовать распознавание лиц с использованием предварительно обученных моделей из Keras-Openface Project и удивительно объяснил и реализовал его Мартин Красер здесь

Проект OpenFace предоставляет предварительно обученныемодели, которые были обучены с использованием открытых наборов данных распознавания лиц FaceScrub и CASIA-WebFace.Проект Keras-OpenFace преобразовал веса предварительно обученной модели nn4.small2.v1 в файлы CSV, которые затем были преобразованы здесь в двоичный формат, который может быть загружен Keras с помощью load_weights

Кодпросто:

nn4_small2_pretrained = create_model()
nn4_small2_pretrained.load_weights('weights/nn4.small2.v1.h5')

Прежде чем перейти к ошибке, чтобы дать более полное представление о том, что происходит в create_model (), вы можете пройти через код здесь

Теперь яМне нужен nn4_small2_pretrained в моем файле Foregnet.py (изначально он является частью train.py для обучения моих пользовательских изображений), но если я сделаю

from train import nn4_small2_pretrained

Или снова напишите код

nn4_small2_pretrained = create_model()
nn4_small2_pretrained.load_weights('weights/nn4.small2.v1.h5')

, затем файл прогноза компилируется много времени, поскольку он снова проходит весь процесс.Чтобы решить эту проблему, я попытался вывести модель в файл рассылки, например, так:

# Save the nn4 pretrained model to pickle file
f = open('pretrained_model.pickle', 'wb')
pickle.dump(nn4_small2_pretrained, f)

Когда я запускаю код, он выдаёт мне эту ошибку

    File "train.py", line 24, in <module>
        pickle.dump(nn4_small2_pretrained, f)
TypeError: can't pickle _thread.lock objects

Я начал с DeelНедавно изучаю модели и рассола, и я не могу понять, в чем дело.Любая помощь будет высоко ценится.

Спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

Я вижу, что create_model() создает экземпляр модели Keras.Если это модель Keras, вы можете сохранить модель, используя model.save(filepath).См. Эту ссылку для других вариантов.

...