簡體   English   中英

在TensorFlow中,為什么am * n矩陣可以添加n * 1個矩陣?

[英]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將成對評估尺寸在右邊。 在以下情況下,尺寸被認為是兼容的:

  • 他們是平等的
  • 其中之一是1
  • 其中之一失蹤了

將這些規則應用於加法運算(+)和形狀為[100,10]和[10]的輸入:

  • 10和10兼容
  • 100和“缺失”兼容

如果形狀是兼容的,並且輸入的尺寸之一為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM