2017-03-15 5 views
0

나는 tensorflow 1.0.0 백엔드가있는 keras 1.2를 사용하고 있습니다.keras tensorflow load_weights fail

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

관련 문제