gpt4 book ai didi

python - tf.session.run 的网络输出与使用 keras.Model.predict 获得的网络输出有很大不同

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:56 24 4
gpt4 key购买 nike

我正在尝试通过 Tensorflow session 使用 Keras 模型。但是结果形式 model.predictsess.run 不同。有什么方法可以通过 Tensorflow session 使用 Kers 模型吗?

Tensorflow version: 1.4.0
Keras version: 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]} )))

最佳答案

好的,它是 K.set_session(s) 而不是 K.tensorflow_backend.set_session(s)

第二:sess.run(tf.global_variables_initializer()) 使用各自的初始化器重置所有变量,包括网络权重(它们默认使用 xavier 初始化器)。

所以你是:

  1. Training the keras model
  2. Printing the prediction for the keras model
  3. Reseting to random weights
  4. Printing the predictions for the same model

注释 sess.run(tf.global_variables_initializer()) 修复了问题:

Keras model. First prediction: [[ 0.99195099]]
Keras model. Second prediction: [[ 0.03110269]]
TF model. First prediction: [[ 0.99195099]]
TF model. Second prediction: [[ 0.03110269]]

关于python - tf.session.run 的网络输出与使用 keras.Model.predict 获得的网络输出有很大不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47459299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com