1. tf.add(a, b) 与 a+b
在神经网络前向传播的过程中,经常可见如下两种形式的代码:
tf.add(tf.matmul(x, w), b)tf.matmul(x, w) + b
简而言之,就是tf.add(a, b)
与a + b
二者的区别,类似的也有,tf.assign
与=
(赋值运算符)的差异。
在计算精度上,二者并没有差别。运算符重载的形式a+b
,会在内部转换为,a.__add__(b)
,而a.__add__(b)
会再一次地映射为tf.add
,在math_ops.py
中相关的映射如下:
_OverrideBinaryOperatorHelper(gen_math_ops.add, "add")
In tensorflow what is the difference between tf.add and operator (+)?
2. tf.nn.bias_add 与 tf.add
tf.nn.bias_add 是 tf.add 的一个特例,也即 tf.add 支持的操作比 tf.nn.bias_add 更多。二者均支持 broadcasting(广播机制),也即两个操作数最后一个维度保持一致。
除了支持最后一个维度保持一致的两个操作数相加外,tf.add 还支持第二个操作数是一维的情况。
Tensorflow Python API 翻译(nn)
如果觉得《TensorFlow 辨异 —— tf.add(a b) 与 a+b(tf.assign 与 =) tf.nn.bias_add 与 tf.add》对你有帮助,请点赞、收藏,并留下你的观点哦!