好吧,我認爲主要的一點是,如果你在分批培養(即列車設置在一次訓練的幾個實例),TensorFlow總是假定x
的第零維表示每批事件的數量。
假設您想要將維度M的訓練實例映射到維度N的目標實例。您通常可以通過將x(列向量)與NxM矩陣相乘來實現此目的(並且可選地添加維度N(也是列向量)),即
y = W * x + b,其中y也是列向量。
從線性代數的角度看,這是完全正確的。但是現在批量訓練已經開始了,即一次訓練了幾個訓練實例。 爲了理解這點,不要將x(和y)看作維度M(和N)的向量,而是將維度看作Mx1(和Nx1)的矩陣。 由於TensorFlow假定組成批次的不同訓練實例沿着第零維對齊,所以我們在這裏陷入困境,因爲第零維由一個單一實例的不同元素佔據。 訣竅是然後以調換上述等式(記得產品的該換位也切換所述兩個轉置對象的順序):
Y 1 T = X^T * w^T + B^T
這幾乎是本教程中簡要描述的內容。 請注意,y^T現在是維1xN(實際上是行向量)的矩陣,而x^T是維1xM(也是行向量)的矩陣。 W^T是維數爲M×N的矩陣。在教程中,他們沒有寫x^T或y^T,而是根據這個轉置方程簡單地定義了佔位符。唯一不清楚的是爲什麼他們沒有定義b
這個「轉置方式」。我假設+
運營商自動轉換b
如果有必要,以獲得正確的尺寸。其餘部分現在很容易:如果批次大於1個實例,則只需「堆積」多個x
(1xM)矩陣,即對維度矩陣(AxM)(其中A是批量大小)。將有希望自動廣播到這個事件數量(這意味着維度矩陣(AxN))。如果然後使用
Y 1 T = X^T * w^T + B^T,
你會得到一個目標的一個(AXN)矩陣批次的每個元素。
你能提供更多的上下文嗎?你從哪裏引用? –
[link](https://www.tensorflow.org/get_started/mnist/beginners)在「落實迴歸」下。 – ddgg007