2017-10-19 1 views
0

Kerat에서 ResNet50을 미세 조정하고 싶지만, ResNet50의 예측과 모델의 출력이 다르다는 것을 처음 알았습니다. 사실, 산출물의 가치는 '무작위'인 것으로 보인다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?ResNet50 keras에서 keras가 예측과 출력에 대해 다른 결과를 제공합니다.

미리 감사드립니다. 여기

import tensorflow as tf 
from resnet50 import ResNet50 
from keras.preprocessing import image 
from imagenet_utils import preprocess_input 
import numpy as np 
from keras import backend as K 

img_path = 'images/tennis_ball.jpg' 
img = image.load_img(img_path, target_size=(224, 224)) 
x = image.img_to_array(img) 
x = np.expand_dims(x, axis=0) 
x_image = preprocess_input(x) 

#Basic prediction 
model_basic = ResNet50(weights='imagenet', include_top=False) 
x_prediction = model_basic.predict(x_image) 

#Using tensorflow to obtain the output 
input_tensor = tf.placeholder(tf.float32, shape=[None, 224,224, 3], name='input_tensor') 
model = ResNet50(weights='imagenet', include_top=False, input_tensor=input_tensor) 
x = model.output 

# Tensorflow session 
session = tf.Session() 
session.run(tf.global_variables_initializer()) 
K.set_session(session) 
feed_dict = {input_tensor: x_image, K.learning_phase(): 0} 

# Obatin the output given the same input 
x_output = session.run(x, feed_dict=feed_dict) 

# Different results 
print('Value of the prediction: {}'.format(x_prediction)) 
print('Value of the output: {}'.format(x_output)) 

그것이 로그의 예는 다음과 같습니다 :

Value of the prediction: [[[[ 1.26408589e+00 3.91489342e-02 8.43058806e-03 ..., 
     5.63185453e+00 4.49339962e+00 5.13037841e-04]]]] 
Value of the output: [[[[ 2.62883282 2.20199227 9.46755123 ..., 1.24660134 1.98682189 
    0.63490123]]]] 

답변

0

이 문제는 session.run(tf.global_variables_initializer()) 임의의 값으로 매개 변수를 초기화이었다

여기 내 코드입니다. 문제 사용하여 해결 하였다

session = K.get_session() 

대신 :

session = tf.Session() 
session.run(tf.global_variables_initializer()) 
관련 문제