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維矩陣。計算過程是第一個矩陣的每一行和第二個矩陣的每一列,即兩個向量相乘。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章