我有一个神经网络,输出神经元我想在进行softmax之前用训练好的权重进行线性缩放。
我有10个输出,我想要10个权重,每个输出在进行softmax之前都乘以相应的权重。所以每个输出对应一个权重。
但是我一直收到错误 Shape must be rank 2 but is rank 1 for 'MatMul_2
,并且它告诉我我的形状是 [?,10], [10]
之前我的代码是这样的
x = tf.placeholder(tf.float32, [None, 784])W = tf.Variable(tf.zeros([784, 10]))b = tf.Variable(tf.zeros([10]))y = tf.nn.softmax(tf.matmul(x, W) + b)
现在我的代码变成了这样
x_ = tf.placeholder(tf.float32, [None, 784])W = tf.Variable(tf.zeros([784, 10]))b = tf.Variable(tf.zeros([10]))W_pre_final = tf.Variable(tf.ones([10]))y_pre_final = tf.matmul(x_, W) + by = tf.nn.softmax(tf.matmul(y_pre_final, W_pre_final))y_ = tf.placeholder(tf.float32, [None, 10])
回答:
我想你需要的是逐元素乘法,而不是矩阵乘法
tf.multiply(y_pre_final, tf.expand_dims(W_pre_final,0))