python中numpy庫的一些使用


想不用第三方庫實現點深度學習的基礎部分,發現numpy真的好難(笑),在此做點遇到的函數的筆記

慣例官方文檔:https://docs.scipy.org/doc/numpy-1.16.1/reference/,但真的屬實弟弟排版。

以下都以import numpy as np為前提。

1. np.zip()作用

該函數以多個可迭代的類型數據為輸入,如字典、列表和元組,從這些迭代類型中各取其一個值,組成新的一個迭代類型。如輸入兩個1x2矩陣(a,b)和(c,d),則會從兩個矩陣中分別同時抽出第一個和第二個組合成一個新的矩陣[(a,c),(b,d)]。但python3中返回的是zip類型,可用list()將之轉換為列表。

這個函數雖然看起來非常雞肋,但是其實異常好用!

在深度學習中需要頻繁地計算帶偏置值的輸入加權和並將其作為激活函數的輸入,即σ(w*a+b),此時可以將偏置矩陣和權值矩陣用zip組合起來,代碼形式就會如下簡便很多!

假設已有偏執矩陣biases和權值矩陣weights並使用sigmoid作為激活函數,單層神經元的前向傳播可寫為:

for b,w in zip(weights.biases):

  output=sigmoid(np.dot(w,output)+b)

 

2.numpy庫的各種矩陣乘法

np.dot(A,B) - 同線性代數中的矩陣乘法(當所給AB均為向量時,按矩陣乘法來看該式就自動退化為兩向量內積)

np.multiply(A,B) - 同結構矩陣元素對應相乘,非常常用且實用

單獨的一個星號‘ * ’,如A*B - 若所給AB為np.array類型,該式會給出同np.multiply的元素對應相乘類型;若所給AB為np.matrix類型,該式會給出同np.dot的矩陣相乘結果。其實就是萬惡的重載差別。可能因為multiply這詞要打的字實在是太多了吧。

 

2.np.reshape(-1,1)中的-1值

當不知道有多少或者懶得計算的時候,使用-1替代行值或列值,reshape會自動計算並正確轉換。

 

(持續更新吧)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM