在之前的一次用TensorFlow实现回归任务的一个小作业当中,出现了一个神奇的错误,记录一下。
下面的代码时总代吗当中的一部分,实现的是对网络结构以及权重系数和偏置进行定义, 如果按照下面的写法,也既先定义权重以及偏置接着对网络层的输出进行计算,这样操作是没有问题的。
# 定义两层简单的网络
x = tf.placeholder(tf.float32, [None, 1])
y = tf.placeholder(tf.float32, [None, 1])
w1 = tf.Variable(tf.random_normal([1, 10]))
b1 = tf.Variable(tf.zeros([1, 10]))
wx_plus_b1 =tf.nn.tanh( tf.matmul(x, w1) + b1)
w2 = tf.Variable(tf.random_normal([10, 1]))
b2 = tf.Variable(tf.zeros([1, 1]))
wx_plus_b2 =f.nn.tanh( tf.matmul(l1, w2) + b2)
但是如果按照下面的写法(先把全部的系数预定义,然后再逐个计算网络的输出):就会出现网络跑不出结果。然而在语法上编译器是不会报错的,但是在逻辑上这样是讲不通的。
# 定义两层简单的网络
x = tf.placeholder(tf.float32, [None, 1])
y = tf.placeholder(tf.float32, [None, 1])
w1 = tf.Variable(tf.random_normal([1, 10]))
b1 = tf.Variable(tf.zeros([1, 10]))
w2 = tf.Variable(tf.random_normal([10, 1]))
b2 = tf.Variable(tf.zeros([1, 1]))
wx_plus_b1 =tf.nn.tanh( tf.matmul(x, w1) + b1)
wx_plus_b2 =f.nn.tanh( tf.matmul(l1, w2) + b2)