2017-03-15 10 views
0

テンソル1.0.0バックエンドのケラス1.2を使用しています。ケラステンソルフローload_weightsが失敗する

私は、jsonから事前に較正されたモデルを読み込んで、その荷重をhdf5ファイルから読み込む関数を持っています。

RuntimeError: The Session graph is empty. Add operations to the graph before calling run() 

それは私が設定することが私のモジュールの先頭に入れて、これらの線が原因である場合、私は疑問に思う:次の例外でload_weights結果に

def load(): 
    model = model_from_json(open(model_path).read()) 
    model.load_weights(model_weights_path) 

この機能は、より正確コール再現性tensorflow種:

tf.set_random_seed(123) # To set Tensorflow seed 
sess = tf.Session() 
keras.backend.set_session(sess) 

それ故にTを失敗、kerasセッションは自動的にセッションに関連付けられたグラフとしてロードされたモデルを設定しないと思われますo重みを初期化する。

例外を回避するための説明と回避策はありますか?

+0

実際にmodel_pathからデータを読み取っているかどうかを再度確認できますか? –

+0

データの読み込みが行われます。私がバックエンドに切り替えると、theanoはすべてうまく動作します。この問題は、再現性のためにKerasに設定​​したセッションから発生します。モデルをロードすると、そのセッションには関連付けられていません – volatile

答えて

0

私はあなたと同じコードを使用していますが、それは私にとってはうまくいきます。

 from keras.models import Sequential 
     from keras.models import Model 
     from keras.layers import Dense, Dropout, Activation, Flatten, Input, GlobalAveragePooling2D 
     from keras.optimizers import RMSprop 
     from keras.utils import np_utils 
     from keras.models import model_from_json 
     from keras.layers import Convolution2D, MaxPooling2D 
     from keras.layers.pooling import AveragePooling2D 
     from keras.layers.normalization import BatchNormalization 
     from keras.layers.convolutional import ZeroPadding2D 
     from keras.engine.topology import Merge 
     from keras.layers import merge 
     from keras.optimizers import Adam 
     from keras import backend as K 
     from keras.layers.pooling import MaxPooling2D 
     from keras.layers.convolutional import ZeroPadding2D 

     import PIL 
     import inception 
     import tensorflow as tf 
     import keras 
     import glob 
     import pandas as pd 
     import pickle 
     import numpy as np 
     import matplotlib.pyplot as plt 
     from PIL import Image 

    # load json and create model 
     json_file = open('model.json', 'r') 
     loaded_model_json = json_file.read() 
     json_file.close() 
     model = model_from_json(loaded_model_json) 
     # load weights into new model 
     model.load_weights("model.h5") 
     print("Loaded model from disk") 

model.summary() 
model.compile(Adam(lr=0.0001), loss='categorical_crossentropy', metrics=['accuracy']) 

score = model.predict(transfer_values_test) 
+0

違いは、私の質問の中で言及したように、私のモジュールの始めにテンソルフローセッションを作成し、それをケラスセッションに設定した点です。私は結果の再現性のために私のセッションの乱数ジェネレータをシードするためにそれをやっています。それは、モデルをロードすると、グラフは例外を引き起こすそのセッションに関連付けられていないようです – volatile

関連する問題