这些功能在TensorFlow中是否相同?

时间:2016-02-29 22:24:23

标签: python tensorflow deep-learning

我是TensorFlow的新手,我在最近几天研究它。 我想了解以下两个函数是否相同:

1

softmax = tf.add(tf.matmul(x, weights), biases, name=scope.name)

2

softmax = tf.nn.softmax(tf.matmul(x, weights) + biases, name=scope.name)

如果它们实际上不同,主要区别是什么?

1 个答案:

答案 0 :(得分:3)

softmax1 = tf.add(tf.matmul(x, weights), biases, name=scope.name)

不等于

softmax2 = tf.nn.softmax(tf.matmul(x, weights) + biases, name=scope.name)

因为softmax1完全没有softmax计算,softmax2确实没有。请参阅tf.nn.softmax的Tensorflow API。 general idea of a softmax通过重新调整整个数据序列来规范化输入,确保它们的条目位于区间(0,1)中,总和为1。

两个陈述之间唯一相同的是基本计算。 +做同样的事情tf.addtf.add(tf.matmul(x, weights), biases) 等于 tf.matmul(x, weights) + biases

编辑:添加一些说明(我想你真的不知道softmax在做什么?):

tf.matmul(x, W) + bias

计算x(您的输入矢量)和W当前图层的权重之间的矩阵乘法。然后添加bias

此计算模拟一层的激活。此外,您还拥有激活功能,例如sigmoid功能可以转换您的激活功能。因此,对于一个层,您通常会执行以下操作:

h1 = tf.sigmoid(tf.matmul(x, W) + bias)

此处h1将激活此图层。

softmax操作只是重新调整您的输入。例如,如果您在输出层上激活了此项:

output = [[1.0, 2.0, 3.0, 5.0, 0.5, 0.2]]

softmax重新调整此输入以适应区间(0,1)中的值,并且总和等于1:

tf.nn.softmax(output)
> [[ 0.01497873,  0.0407164 ,  0.11067866,  0.81781083,  0.00908506,
     0.00673038]]

tf.reduce_sum(tf.nn.softmax(output))
> 1.0