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