我目前正在学习神经网络背后的理论,我想学习如何对这种模型进行编码。因此,我开始研究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
为了运行初始化操作,您应该写:
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)