web-dev-qa-db-ja.com

不明な初期化子:Kerasモデルの読み込み時のGlorotUniform

Google ColabでCNN(VGG)をトレーニングし、.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
18
Dhruvin modi

私は同じ問題に遭遇しました。変更後:

from tensorflow import keras

に:

import keras

人生は再び生きる価値があります。

14
lintex

うわー、私はこれを理解するために私の人生の6時間を費やしました.. Dmitriはこれに対する解決策をここに投稿しました: Google colabでkerasモデルを訓練しました。システム上でローカルにロードできなくなりました。

それは私のために働いたので、私は基本的にここにそれを再投稿しています。

これは、kerasの何らかのシリアル化バグのように見えます。 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')
16
Alex Begun

私は問題を修正しました:

前:

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')

変更

from keras.models import load_model

to

from tensorflow.keras.models import load_model

私の問題を解決しました!

エラーを排除するには、KerasまたはTensorFlowから直接allをインポートします。同じプロジェクトで両方を混在させると、問題が発生する可能性があります。

8
0x01h

私は同じ問題を抱えており、このように修正されました。オプティマイザーをモデルと一緒に保存しないでください!次のように保存行を変更するだけです。

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

2番目のパラメーターは、ファイルが存在するかどうかにかかわらずモデルを上書きするようにKerasに指示し、3番目のパラメーターはオプティマイザーをモデルとともに保存しないように指示します。


編集:今日、別のシステムで問題を再度実行しましたが、今回はこれが役に立ちませんでした。そのため、モデル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)
2
Babakslt

何か それは私を助けたが、どの答えにもなかった:

custom_objects={'GlorotUniform': glorot_uniform()}

2
M. Viaz

モデルのアーキテクチャをロードしながら、アーキテクチャとウェイトを個別にロードする場合:

models.model_from_json(json)

に:

tf.keras.models.model_from_json(json)

そして問題は解決されました

1
Azizi ilias

Tensorflow 11.1.0(tensorflow.python.keras.models.save_modelを使用)で構築され、tensoflow 1.11.0(tensorflow.python.keras.models.load_modelを使用)でロードされたモデルでも同じ問題が発生しました。

すべてをtensorflow 1.13.1にアップグレードして解決しました。新しいバージョンでモデルを再構築した後、このエラーなしでロードできました。

0
Benjamin
from tensorflow.keras.initializers import glorot_uniform

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

テンソルフローケラスをインポートするときにこれは私のために働いた

0
Josh Anish