2017-11-23 3 views
3

Tensorflowセッションを通じてKerasモデルを使用しようとしています。しかし、結果はmodel.predictsess.runと異なります。 Tensorflowセッションを通じてKersモデルと連携する方法はありますか?tf.session.runのネットワーク出力は、keras.Model.predictで取得したネットワーク出力と大きく異なります。

Tensorflowバージョン:1.4.0
Kerasバージョン:2.1.1

from sklearn.datasets.samples_generator import make_circles 
from keras.models import Sequential 
from keras.layers import Dense 
from keras.optimizers import SGD 
import numpy as np 
import tensorflow as tf 
from keras import backend as K 

sess = tf.Session() 
K.tensorflow_backend.set_session(sess) 

X, y = make_circles(n_samples=1000, 
        noise=0.1, 
        factor=0.2, 
        random_state=0) 

model = Sequential() 
model.add(Dense(4, input_shape=(2,), activation='tanh')) 
model.add(Dense(1, activation='sigmoid')) 
model.compile(SGD(lr=0.5), 'binary_crossentropy', metrics=['accuracy']) 
model.fit(X, y, epochs=20) 

print("Keras model. First prediction: " + str(model.predict(np.c_[0, 0]))) 
print("Keras model. Second prediction: " + str(model.predict(np.c_[1.5, 1.5]))) 

with sess.as_default(): 

    y_tensor = model.outputs[0] 
    x_tensor = model.inputs[0] 
    sess.run(tf.global_variables_initializer()) 

    print("TF model. First prediction: " + str(sess.run(y_tensor, feed_dict={x_tensor: np.c_[0, 0]}))) 
    print("TF model. Second prediction: " + str(sess.run(y_tensor, feed_dict={x_tensor: np.c_[1.5, 1.5]}))) 
+0

https://www.tensorflow.org/api_docs/python/tf/keras – scarecrow

答えて

6

さて、それはK.set_session(s)ないK.tensorflow_backend.set_session(s)です。

第2:sess.run(tf.global_variables_initializer())は、ネットワーク重みを含めて、それぞれの初期化子を使用してすべての変数をリセットします(デフォルトではxavierイニシャライザを使用します)。

だからあなたは、次のとおりです。

  1. はkerasモデル
  2. 同じモデル
の予測を印刷ランダム重み
  • にResetingの予測を印刷
  • kerasモデルのトレーニング
  • コメントsess.run(tf.global_variables_initializer())は、この種のフローの代わりに `tf.keras`を直接使用する方がよいでしょう:

    Keras model. First prediction: [[ 0.99195099]] 
    Keras model. Second prediction: [[ 0.03110269]] 
    TF model. First prediction: [[ 0.99195099]] 
    TF model. Second prediction: [[ 0.03110269]] 
    
    関連する問題