TensorFlow出现错误:ValueError: Dimensions must be equal, but are 32 and 3 for add (op: Add) with

使用tensorflow在训练神经网络中出现错误:

ValueError: Dimensions must be equal, but are 784 and 10 for 'add' (op: 'Add') with input shapes: [784,784], [10].

出现这种错误一般就是输入,输出矩阵,和   tf.matmul(weight, x) + bias 计算中矩阵不能相乘所造成的

matmul(weight, x)函数表示行数为weight,列数为x的矩阵

说白了就是矩阵相乘维度不一致导致,

比如输入矩阵为:49x2      输出矩阵为:49x3

整个网络计算的矩阵维度要一致,可以相乘。49x2   2x50  50x21  21x3   计算到最后得到  49x3正好是输出

#定义两个placeholder
x = tf.placeholder(tf.float32, [None, 784])
y = tf.placeholder(tf.float32, [None, 10])
input_num=784
output_num=10
#神经网络层
weight = tf.Variable(tf.zeros([784, 10]))
bias = tf.Variable(tf.zeros([10]))
predict = tf.matmul(weight, x) + bias

none*784  ×  784*mm  x  mm*10 矩阵相乘 结果为none*10 正好为输出y的矩阵形式,这样才可以进行计算
mm为任意数,这个在矩阵乘法中可以约掉


例如:

矩阵乘法是最常见的方法,也是在深度神经网络中用的很多的加权求和中的加权操作。两个矩阵做乘法,必须满足第一个矩阵的第二维和第二个矩阵的第一维要相等,结果的维度等于第一个矩阵的第一维和第二个矩阵的第二维。 比如mn的矩阵和np的矩阵,结果为m*p维矩阵。计算过程是第一个矩阵的每一行和第二个矩阵的每一列,即两个向量相乘。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值