在tensorflow中,若将矩阵[m, n]与向量[m, 1]或者[1, n]相加时,会将向量扩展为与矩阵相同的维度,扩展的方式为将那一行或那一列进行复制。
这符合我们训练神经网络的方式,通过将偏置进行扩展,与之前输入与权重矩阵之乘积相加。
附上实验验证代码:
import tensorflow as tf
a = tf.get_variable("a", [3, 5])
b = tf.get_variable("b", [5])
c = a + b
e = tf.get_variable("e", [3, 5])
f = tf.get_variable("f", [3, 1])
g = e + f
sess = tf.Session()
sess.run(tf.global_variables_initializer())
print("#####列数相同#####")
print(sess.run(a))
print()
print(sess.run(b))
print()
print(sess.run(c))
print(" ")
print("#####行数相同#####")
print(sess.run(e))
print()
print(sess.run(f))
print()
print(sess.run(g))
实验结果:(因为是随机获取的,所以取值每次不同)
#####列数相同#####
[[ 0.81363505 0.26627463 0.27356774 0.36406642 -0.7111013 ]
[-0.29866582 -0.2352885 0.8559807 -0.7924669 0.77885073]
[-0.48088035 0.27559048 -0.3353547 0.23906273 -0.3298599 ]]
[-0.69925094 0.2096883 0.28396606 -0.526588 0.49034274]
[[ 0.11438411 0.47596294 0.5575338 -0.1625216 -0.22075856]
[-0.99791676 -0.02560019 1.1399467 -1.3190548 1.2691934 ]
[-1.1801313 0.4852788 -0.05138862 -0.2875253 0.16048282]]
#####行数相同#####
[[ 0.41104835 -0.84336275 0.5201873 0.09029013 -0.00182796]
[ 0.7718535 -0.4745056 0.3609249 -0.40684757 -0.64907944]
[-0.81410956 -0.7425774 -0.08698446 -0.7393564 -0.52618897]]
[[ 1.2194177 ]
[-0.16229677]
[ 0.8885592 ]]
[[ 1.630466 0.37605494 1.739605 1.3097079 1.2175897 ]
[ 0.60955673 -0.6368024 0.19862813 -0.56914437 -0.8113762 ]
[ 0.07444966 0.14598185 0.80157477 0.14920282 0.36237025]]