算法工程師修仙之路:Keras(八)

深度學習基礎

神經網絡的數學基礎


神經網絡的“齒輪”:張量運算

張量變形

  • 第三個重要的張量運算是張量變形(tensor reshaping)。張量變形是指改變張量的行和列,以得到想要的形狀。變形後的張量的元素總個數與初始張量相同。

    >>> x = np.array([[0., 1.],
    				  [2., 3.],
    			      [4., 5.]])
    >>> print(x.shape)
    (3, 2)
    >>> x = x.reshape((6, 1))
    >>> x
    array([[ 0.],
    	   [ 1.],
    	   [ 2.],
    	   [ 3.],
    	   [ 4.],
    	   [ 5.]])
    >>> x = x.reshape((2, 3))
    >>> x
    array([[ 0., 1., 2.],
    	   [ 3., 4., 5.]])
    
  • 經常遇到的一種特殊的張量變形是轉置(transposition)。對矩陣做轉置是指將行和列互換,使 x[i, :] 變爲 x[:, i]。

    >>> x = np.zeros((300, 20))	# 創建一個形狀爲 (300, 20) 的零矩陣
    >>> x = np.transpose(x)
    >>> print(x.shape)
    (20, 300)
    

張量運算的幾何解釋

  • 對於張量運算所操作的張量,其元素可以被解釋爲某種幾何空間內點的座標,因此所有的張量運算都有幾何解釋。

  • 通常來說,仿射變換、旋轉、縮放等基本的幾何操作都可以表示爲張量運算。舉個例子,要將一個二維向量旋轉 theta 角,可以通過與一個2×2矩陣做點積來實現,這個矩陣爲 R = [u, v],其中 u 和 v 都是平面向量:u = [cos(theta), sin(theta)],v = [-sin(theta), cos(theta)]。

深度學習的幾何解釋

  • 神經網絡完全由一系列張量運算組成,而這些張量運算都只是輸入數據的幾何變換。 因此,你可以將神經網絡解釋爲高維空間中非常複雜的幾何變換,這種變換可以通過許多簡單的步驟來實現。

  • 機器學習的內容:爲複雜的、高度摺疊的數據流形找到簡潔的表示。

  • 深度學習特別擅長這一點:它將複雜的幾何變換逐步分解爲一長串基本的幾何變換,深度網絡的每一層都通過變換使數據解開一點點,許多層堆疊在一起,可以實現非常複雜的解開過程。

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