[英]In TensorFlow, why a m*n matrix can add n * 1 matrix?
我是python和TensorFlow的新手,最近幾天,當我學習“ MNIST對於ML初學者”時遇到一個問題( https://www.tensorflow.org/get_started/mnist/beginners )。
在本教程中,我們使用y = tf.nn.softmax(tf.matmul(X, W) + b)
來獲取輸出。
我的問題是,例如,在我們稱為tf.matmul之后,X是[100,784]矩陣,W是[784,10]矩陣,b是[10]張量(類似於[10,1]矩陣?)。 (X,W)我們將得到一個[100,10]矩陣。 這是我的問題,[100,10]矩陣如何在此處添加ab [10]張量? 這對我來說沒有任何意義。
我知道為什么會有偏見,而且我知道為什么需要增加偏見。 但是我只是不知道“ +”運算符如何解決這個問題。
這是因為在Numpy和TensorFlow中都可以找到稱為廣播的概念。 在較高的層次上,它是這樣工作的:
假設您正在使用一個支持廣播(例如+或*)並具有2個輸入張量X和Y的op。為了評估X和Y的形狀是否兼容,op將成對評估尺寸在右邊。 在以下情況下,尺寸被認為是兼容的:
將這些規則應用於加法運算(+)和形狀為[100,10]和[10]的輸入:
如果形狀是兼容的,並且輸入的尺寸之一為1或丟失,則op將實質上平鋪該輸入以匹配其他輸入的形狀。
在您的示例中,加法運算將在進行加法之前有效地將形狀[10]的Y平鋪為形狀[100,10]。
有關更多詳細信息,請參閱有關廣播的Numpy文檔( https://docs.scipy.org/doc/numpy-1.13.0/user/basics.broadcasting.html )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.