夜夢,語文老師勒令我寫一篇《深度學習入門:基於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 為什麼深層網路比淺層網路的表達能力更好?最優化...