TensorFlow训练GAN时, 关于“tf.matmul(z, G_W1) + G_b1” 为何矩阵能和向量相加的实验探索

在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]]

猜你喜欢

转载自blog.csdn.net/zhuiqiuzhuoyue583/article/details/84881837