Неизвестный инициализатор: GlorotUniform при загрузке модели Keras - PullRequest
0 голосов
/ 07 ноября 2018

Я обучил свой CNN (VGG) через Google Colab и сгенерировал файл .h5. Теперь проблема в том, что я могу успешно предсказать свой вывод с помощью Google Colab, но когда я загружаю этот обученный файл модели .h5 и пытаюсь предсказать вывод на моем ноутбуке, я получаю ошибку при загрузке модели.

Вот код:

import tensorflow as tf
from tensorflow import keras
import h5py

# Initialization

loaded_model = keras.models.load_model('./train_personCount_model.h5')

И ошибка:

ValueError: Unknown initializer: GlorotUniform

Ответы [ 9 ]

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

, если вы загружаете архитектуру и веса отдельно, при загрузке архитектуры модели измените:

models.model_from_json(json)

до:

tf.keras.models.model_from_json(json)

и проблема решена

0 голосов
/ 15 июля 2019
from tensorflow.keras.initializers import glorot_uniform

loaded_model = tf.keras.models.load_model("pruned.h5",custom_objects={'GlorotUniform': glorot_uniform()})

это сработало для меня при импорте тензор потока керас

0 голосов
/ 29 марта 2019

У меня была такая же проблема с моделью, созданной с tenorflow 11.1.0 (с использованием tennflow.python.keras.models.save_model) и загруженной с tenenslow 1.11.0 (с использованием тензор потока.python.keras.models.load_model).

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

0 голосов
/ 20 июня 2019

Изменение

from keras.models import load_model

до

from tensorflow.keras.models import load_model

решил мою проблему!

Чтобы устранить ошибки, импортируйте все вещи напрямую из Keras или TensorFlow. Смешивание их обоих в одном проекте может привести к проблемам.

0 голосов
/ 26 февраля 2019

Я исправил проблему:

До:

from keras.models import load_model classifierLoad = load_model('model/modeltest.h5')

У меня работает

import tensorflow as tf classifierLoad = tf.keras.models.load_model('model/modeltest.h5')

0 голосов
/ 19 февраля 2019

Что-то , которое помогло мне, чего не было ни в одном из ответов:

custom_objects={'GlorotUniform': glorot_uniform()}

0 голосов
/ 09 декабря 2018

Ух ты, я только что потратил 6 часов своей жизни, пытаясь выяснить это .. Дмитрий разместил решение этого вопроса здесь: Я обучил модель keras на Google Colab. Теперь не могу загрузить его локально в моей системе.

Я просто в основном репостил здесь, потому что это сработало для меня.

Это похоже на ошибку сериализации в керасе. Если вы оберните свою load_model нижеприведенной штукой CustomObjectScope ... все должно работать ..

import keras
from keras.models import load_model
from keras.utils import CustomObjectScope
from keras.initializers import glorot_uniform

with CustomObjectScope({'GlorotUniform': glorot_uniform()}):
        model = load_model('imdb_mlp_model.h5')
0 голосов
/ 06 декабря 2018

Я столкнулся с той же проблемой. После изменения:

from tensorflow import keras

до:

import keras

Жизнь снова стоит того, чтобы жить.

0 голосов
/ 19 ноября 2018

У меня была такая же проблема, и я ее исправил только не сохраняйте оптимизатор вместе с моделью! просто измените строку сохранения следующим образом:

the_model.save(file_path,True/False,False)

Второй параметр указывает Keras перезаписать модель, если файл существует или нет, а третий - не сохранять оптимизатор вместе с моделью.


Редактировать : Сегодня я снова столкнулся с проблемой в другой системе, и в этот раз это мне не помогло. поэтому я сохранил модель conf как json, а весы - как h5 и использовал их для перестройки модели на другой машине. Вы можете сделать это так. сохранить как это:

json = model.to_json()
# Save the json on a file
model.save_weights(weights_filepath,save_format="h5")

перестроить модель так:

# load the json file
# here i use json as loaded content of json file
model = keras.models.model_from_json(json)
model.load_weights(weights_file_path)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...