TensorFlow 里的线性函数
y=xW+b
这里W 是连接两层的权重矩阵。输出y,输入x,偏差 b 全部都是向量。
训练神经网络的目的是更新权重和偏差来更好地预测目标。为了使用权重和偏差,你需要一个能修改的 Tensor.这里就需要 tf.Variable 了。
tf.Variable 类创建一个 tensor,其初始值可以被改变,就像普通的 Python 变量一样。该 tensor 把它的状态存在 session 里,所以你必须手动初始化它的状态。你将使用 tf.global_variables_initializer() 函数来初始化所有可变 tensor。
x = tf.Variable(5)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
tf.global_variables_initializer() 会返回一个操作,它会从 graph 中初始化所有的 TensorFlow 变量。你可以通过 session 来调用这个操作来初始化所有上面的变量。用 tf.Variable 类可以让我们改变权重和偏差,但还是要选择一个初始值。
从正态分布中取随机数来初始化权重是个好习惯。随机化权重可以避免模型每次训练时候卡在同一个地方。
可以用 tf.truncated_normal() 函数从一个正态分布中生成随机数。
n_features = 120
n_labels = 5
weights = tf.Variable(tf.truncated_normal((n_features, n_labels)))
因为权重已经被随机化来帮助模型不被卡住,你不需要再把偏差随机化了。让我们简单地把偏差设为 0。
n_labels = 5
bias = tf.Variable(tf.zeros(n_labels))