这些函数在 TensorFlow 中是否等效?
Are these functions equivalent in TensorFlow?
我是 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)
如果它们实际上不同,主要区别是什么?
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
有。请参阅 Tensorflow API for tf.nn.softmax. The general idea of a softmax 是它通过重新缩放整个数据序列确保它们的条目在区间 (0, 1) 中 标准化 输入总和为 1.
两个语句之间唯一相同的是基本计算。 +
做同样的事情 tf.add 做同样的事情 tf.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
我是 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)
如果它们实际上不同,主要区别是什么?
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
有。请参阅 Tensorflow API for tf.nn.softmax. The general idea of a softmax 是它通过重新缩放整个数据序列确保它们的条目在区间 (0, 1) 中 标准化 输入总和为 1.
两个语句之间唯一相同的是基本计算。 +
做同样的事情 tf.add 做同样的事情 tf.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