您的位置:首页 > 其它

深度学习笔记3--TensorFlow线性函数

2017-08-16 16:35 246 查看

TensorFlow 里的线性函数

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



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

TensorFlow 里的权重和偏差

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

因为他们的 Tensor
4000
s 不能改变。这里就需要
tf.Variable
了。

tf.Variable()

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

来初始化所有可变 tensors。

初始化
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
[/code]
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)))
[/code]
tf.truncated_normal()
返回一个 tensor,它的随机值取自一个正态分布,并且它们的取值会在这个正态分布平均值的两个标准差之内。

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

tf.zeros()

n_labels = 5
bias = tf.Variable(tf.zeros(n_labels))
[/code]
tf.zeros()
function 返回一个都是 0 的 tensor。

TensorFlow Softmax

The softmax 函数可以把它的输入,通常被称为 logits 或者 logit scores,处理成 0 到 1 之间,并且能够把输出归一化到和为 1。这意味着 softmax 函数与分类的概率分布等价。它是一个网络预测多酚类问题的最佳输出激活函数。



softmax 函数的实际应用示例

TensorFlow Softmax

当我们用 TensorFlow 来构建一个神经网络时,相应地,它有一个计算 softmax 的函数。

x = tf.nn.softmax([2.0, 1.0, 0.2])

就是这么简单,
tf.nn.softmax()
直接为你实现了 softmax 函数,它输入 logits,返回 softmax 激活函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: