[在Python中使用TensorFlow的XOR神经网络

问题描述 投票:0回答:1

我目前正在学习神经网络背后的理论,我想学习如何对这种模型进行编码。因此,我开始研究TensorFlow。

我发现了一个我想编写的非常有趣的应用程序,但是目前无法使它正常工作,我也不知道为什么!

该示例来自Deep Learning, Goodfellow et al 2016第171-177页。

import tensorflow as tf

T = 1.
F = 0.
train_in = [
    [T, T],
    [T, F],
    [F, T],
    [F, F],
]
train_out = [
    [F],
    [T],
    [T],
    [F],
]
w1 = tf.Variable(tf.random_normal([2, 2]))
b1 = tf.Variable(tf.zeros([2]))

w2 = tf.Variable(tf.random_normal([2, 1]))
b2 = tf.Variable(tf.zeros([1]))

out1 = tf.nn.relu(tf.matmul(train_in, w1) + b1)
out2 = tf.nn.relu(tf.matmul(out1, w2) + b2)

error = tf.subtract(train_out, out2)
mse = tf.reduce_mean(tf.square(error))

train = tf.train.GradientDescentOptimizer(0.01).minimize(mse)

sess = tf.Session()
tf.global_variables_initializer()

err = 1.0
target = 0.01
epoch = 0
max_epochs = 1000

while err > target and epoch < max_epochs:
    epoch += 1
    err, _ = sess.run([mse, train])

print("epoch:", epoch, "mse:", err)
print("result: ", out2)

运行代码时,我在Pycharm中收到以下错误消息:Screenshot

python-3.x tensorflow neural-network pycharm xor
1个回答
0
投票

为了运行初始化操作,您应该写:

sess.run(tf.global_variables_initializer())

而不是:

tf.global_variables_initializer()

这里是工作版本:

import tensorflow as tf

T = 1.
F = 0.
train_in = [
    [T, T],
    [T, F],
    [F, T],
    [F, F],
]
train_out = [
    [F],
    [T],
    [T],
    [F],
]
w1 = tf.Variable(tf.random_normal([2, 2]))
b1 = tf.Variable(tf.zeros([2]))

w2 = tf.Variable(tf.random_normal([2, 1]))
b2 = tf.Variable(tf.zeros([1]))

out1 = tf.nn.relu(tf.matmul(train_in, w1) + b1)
out2 = tf.nn.relu(tf.matmul(out1, w2) + b2)

error = tf.subtract(train_out, out2)
mse = tf.reduce_mean(tf.square(error))

train = tf.train.GradientDescentOptimizer(0.01).minimize(mse)

sess = tf.Session()
sess.run(tf.global_variables_initializer())

err = 1.0
target = 0.01
epoch = 0
max_epochs = 1000

while err > target and epoch < max_epochs:
    epoch += 1
    err, _ = sess.run([mse, train])

print("epoch:", epoch, "mse:", err)
print("result: ", out2)
© www.soinside.com 2019 - 2024. All rights reserved.