ValueError: Неизвестный слой: CapsuleLayer - PullRequest
0 голосов
/ 13 июня 2018

Я определил пользовательский слой с именем CapsuleLayer.Фактическая модель была определена в отдельном классе.Я загрузил веса в фактическую модель и сохранил модель в файле .h5.Однако, когда я пытаюсь загрузить модель, используя load_model(filepath), я получаю сообщение об ошибке

ValueError: Неизвестный слой: CapsuleLayer

Как включить пользовательский слой в мою модельво время загрузки сохраненной модели.

1 Ответ

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

Cf Keras FAQ, «Обработка пользовательских слоев (или других пользовательских объектов) в сохраненных моделях» :

Если модель, которую вы хотите загрузить, включает в себя пользовательские слои или другие пользовательскиеклассы или функции, вы можете передать их в механизм загрузки через аргумент custom_objects:

from keras.models import load_model
# Assuming your model includes instance of an "AttentionLayer" class
model = load_model('my_model.h5', custom_objects={'AttentionLayer': AttentionLayer})

В качестве альтернативы, вы можете использовать настраиваемую область объекта:

from keras.utils import CustomObjectScope

with CustomObjectScope({'AttentionLayer': AttentionLayer}):
    model = load_model('my_model.h5')

Обработка пользовательских объектов работаетТо же самое для load_model, model_from_json, model_from_yaml:

from keras.models import model_from_json
model = model_from_json(json_string, custom_objects={'AttentionLayer': AttentionLayer})

В вашем случае model = load_model('my_model.h5', custom_objects={'CapsuleLayer': CapsuleLayer}) должно решить вашу проблему.

...