2017-10-19 3 views
0

Ich möchte die ResNet50 von Keras Feinabstimmung, aber zuerst habe ich festgestellt, dass bei der gleichen Eingabe die Vorhersage von ResNet50 unterscheidet sich von der Ausgabe des Modells. Tatsächlich scheint der Wert der Ausgabe "zufällig" zu sein. Was mache ich falsch?ResNet50 Von Keras gibt verschiedene Ergebnisse für die Vorhersage und Ausgabe

Vielen Dank im Voraus!

Hier ist es mein Code:

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

Hier ist ein Beispiel für die Protokolle:

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]]]] 

Antwort

0

Das Problem war, dass session.run(tf.global_variables_initializer()) Ihre Parameter zu Zufallswerten initialisiert. Das Problem wurde gelöst durch die Verwendung:

session = K.get_session() 

statt:

session = tf.Session() 
session.run(tf.global_variables_initializer()) 
Verwandte Themen