TensorFlow 里的线性函数

TensorFlow 里的线性函数

神经网络中最常见的运算,就是计算输入,权重和偏差的线性组合。回忆一下,我们可以把线性操作的输入写成:

这里 W 是连接两层的权重矩阵。输出 y ,输入 x, 偏差 b 全部都是向量。

TensorFlow 里的权重和偏差

训练神经网络的目的是更新权重和偏差来更好的预测目标。为了使用权重和偏差,你需要一个能修改的 Tensor 。这就排除了tf.placeholder() 和 tf.constant() 因为他们的 Tensors 不能改变。这里就需要  tf.Variable 了。

tf.Variable()

x = tf.Variable(5)

tf.Variable 类创建一个 tensor,它的初始值可以被改变,就像普通的 Python 变量一样。tensor 把它的状态存在 session里,所以你必须手动初始化它的状态。你用tf.global_variables_initializer() 来初始化所有可变 tensors。

初始化
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() 函数从一个正态分布中产生随机数。

tf.truncated_normal()

n_features = 120
n_labels = 5
weights = tf.Variable(tf.truncated_normal((n_features, n_labels)))

tf.truncated_normal() 返回一个 tensor,它的随机值取自一个正态分布,并且它们的取值会在这个正态分布平均值的两个标准差之内。

因为权重已经被随机化来帮助模型不被卡住,你不需要再把偏差随机化了。让我们简单地把偏差设为 0。

tf.zeros()

n_labels = 5
bias = tf.Variable(tf.zeros(n_labels))

tf.zeros() function 返回一个都是 0 的 tensor。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ncst

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值