深度學習理論基礎1 Numpy

2021-09-05 16:11:10 字數 2617 閱讀 6212

夜夢,語文老師勒令我寫一篇《深度學習入門:基於python的理論與實現》讀後感。我不敢懈怠,立即翻出我的膝上型電腦,開始寫作文。。。。

--------numpy--------

簡介:---->是乙個python第三方模組

---->處理陣列,矩陣,多維陣列十分便捷

---->底層用c語言實現,高效

--------numpy陣列的加減乘除運算--------

np_arr=np.array([1,2,3])
這裡numpy的array()方法返回了乙個numpy.ndarray型別的物件,其引數接受了乙個列表。

numpy.ndarray型別支援的運算讓人滿足及歡樂。我將立即舉幾個例子,分享我的歡樂。

np陣列的運算十分有趣。np陣列成員之間進行逐個運算,形成了新的陣列。這一切都沒有用到迴圈!np陣列相較於python迴圈的優勢,在資料量大的時候愈加明顯。

--------numpy陣列的其他功能--------

----  (這個標記會分割知識點)

array=np.array([[1,2,3],[4,5,6]]) #[[1 2 3] [4 5 6]]

print(array.shape) #輸出(2,3)

print(array.dtype) #int32

乙隻多維陣列,np陣列的shape屬性顯示了這個np陣列的維度,dtype屬性顯示了這個np陣列的型別

array_10=array*10

print(array_10) #輸出[[10 20 30] [40 50 60]]

np陣列的廣播功能。乙個np陣列乘以單個的10,np陣列內的每個元素都被乘以10.更詳細的原理在下圖。

其實10被自動補全成了與array相同的形狀,然後相乘。

接下來,我們看一下更高階的補全操作。

array_2 = np.array([2,4,10])

array_t = array * array_2

print(array_t) # 輸出[[ 2 8 30] [ 8 20 60]]

考慮下np.array([2,4,10])是怎麼被補全成array的形狀的呢?

如果你負責空間思維的那塊腦子不夠大,下面的圖會幫到你。

print(array[0]) # 輸出[1 2 3]

print(array[0][1]) # 輸出2

索引取值。

array_1 = array.flatten()

print(array_1) # 輸出[1 2 3 4 5 6]

把多維陣列扁平化。也就是降維打擊。把多維變成1維。

現在我們有array_1這個np陣列,我們來逗逗它。

array_index=array_1[np.array([2,3,4])]

print(array_index) # 輸出[3 4 5]

可以看到,乙個np陣列的索引裡面依然可以放乙個np陣列。會根據索引裡的np陣列作為索引生成新的np陣列。

array_tf=array_1[np.array([true,false,true,false,false,false])]

print(array_tf) # 輸出[1 3]

或者np陣列也可以接受乙個成員為bool型別的np陣列(普通陣列型別的也可以接受)。結果也是一目了然的。

現在我們結合一下np陣列運算和np陣列的索引取值。

v = array_1 > 4

array_index=array_1[v]

print(array_index) #輸出[5 6]

先計算出一串bool成員的np陣列

然後把這個np陣列作為array_1的索引

這兩個組合操作讓我們得到這個陣列大於4的成員,是不是很方便呢?

--------結語--------

深度學習理論基礎14 數值微分

先來看乙個導數的公式 其中h是趨近無限小的數。導數表示x方向的微小變化導致f x 的值在多大程度發生變化。如果用 幫助你的理解,這個 是這樣的 def numerical diff f,x h 10e 50 return f x h f x h 現在你大約了解了導數是怎麼回事 學渣才不知道的吧,喂!...

深度學習理論基礎11 輸出層的設計

首先,繼續上節的話題。softmax 函式。這只就是softmax函式了。其中a代表輸出層的輸入資料,ak代表第k個輸入。如果你覺得又難理解又難記,其實可以拆成3步來理解 1.把所有的輸入計算成序列 e a1 e a2 e a3 e an 用np的廣播功能一行就能搞定 2.計算得到上面的結果之和su...

深度學習的理論基礎

在 1989 年提出通用近似定理以來,至少我們有了最基本的乙個理論基礎,即神經網路有潛力解決各種複雜的現實問題。mit 教授 tomaso poggio 曾在他的系列研究中 1 表示深度學習理論研究可以分為三大類 表徵問題 representation 為什麼深層網路比淺層網路的表達能力更好?最優化...