python numpy pad函式使用

2021-08-21 10:54:12 字數 2499 閱讀 8589

在卷積神經網路中,為了避免邊緣畫素點不能有效得到使用,同時,在卷積之後,被不斷壓縮的情況,我們有乙個重要的操作叫做padding,翻譯為填充,主要是通過在周圍填充一定量的畫素點來避免上述兩種問題的產生。

如上圖所示,紅色區域為原始影象,我們需要將其周圍做好填充,使其成為乙個更大的圖畫,避免卷積結束後出現畫素點的損失,從而避免了神經網路無法加深的問題。

在python的numpy庫函式中,該函式已經被封裝好。

arr1d = np.array([1,2,3,4])

>>> arr1 = np.pad(arr1d, ((2,2)), 'constant')

>>> arr1

array([0, 0, 1, 2, 3, 4, 0, 0])

arr1 = np.pad(arr1d, ((2,2)), 'edge')

>>> arr1

array([1, 1, 1, 2, 3, 4, 4, 4])

>>> arr1 = np.pad(arr1d, ((2,2)), 'linear_ramp')

>>> arr1

array([0, 0, 1, 2, 3, 4, 2, 0])

>>> arr1 = np.pad(arr1d, ((2,2)), 'maximum')

>>> arr1

array([4, 4, 1, 2, 3, 4, 4, 4])

>>> arr1 = np.pad(arr1d, ((2,2)), 'mean')

>>> arr1

array([2, 2, 1, 2, 3, 4, 2, 2])

>>> arr1 = np.pad(arr1d, ((2,2)), 'median')

>>> arr1

array([2, 2, 1, 2, 3, 4, 2, 2])

>>> arr1 = np.pad(arr1d, ((2,2)), 'minimum')

>>> arr1

array([1, 1, 1, 2, 3, 4, 1, 1])

>>> arr1 = np.pad(arr1d, ((2,2)), 'reflect')

>>> arr1

array([3, 2, 1, 2, 3, 4, 3, 2])

>>> arr1 = np.pad(arr1d, ((3,3)), 'reflect')

>>> arr1

array([4, 3, 2, 1, 2, 3, 4, 3, 2, 1])

>>> arr1 = np.pad(arr1d, ((4,4)), 'reflect')

>>> arr1

array([3, 4, 3, 2, 1, 2, 3, 4, 3, 2, 1, 2])

>>> arr1 = np.pad(arr1d, ((2,2)), 'symmetric')

>>> arr1

array([2, 1, 1, 2, 3, 4, 4, 3])

>>> arr1 = np.pad(arr1d, ((2,2)), 'wrap')

>>> arr1

array([3, 4, 1, 2, 3, 4, 1, 2])

但是如何呼叫還是要注意,首先,卷積操作基於整個影象,而通常一副彩色圖是由三個二維矩陣組成的立體三維陣列,所以,卷積核也是三維的,相應的,卷積運算就在兩個維度上展開,卷積核的移動式向右,向下,再向右,向下,直到遍歷結束為止,因此,我們的填充操作只在兩個軸上進行,也就是我們通常意義的x軸和y軸,但問題的關鍵在於,當我們在python中,用np.array定義了乙個三維陣列之後,怎麼把每乙個緯度對映到我們通常所理解的三維上呢!這塊是我個人的理解,不知道對不對,理論上一幅圖,我們是要在x和y軸兩個方向上做改變,但是,如果將三色圖看成乙個立體的,我們的改變實際上發生在x和z兩個方向上,如果我們將每種通道的畫素值(rgb)分別儲存在乙個二維陣列裡,就得到了乙個三維陣列,而對應的緯度計算時shape的第乙個值與的表示正好相反,所以,需要我們對後兩位進行作用。

如圖所示,不過,一般的資料集都會考慮到這一點,所以,在運算元據集的時候,座標順序表示依然是正確的,只需要作用前兩位填充即可。

WaitForSingleObject函式的使用

程式舉例 1 建立對話方塊應用程式,專案名稱為mytestthread 2 新增按鈕,命名為啟動和停止,在對話方塊中增加編輯框,id為idc time,3 增加成員變數,handle m hthread 2 此為執行緒的控制代碼 4 定義全域性變數,用來控制線程的執行與否 volatile bool...

cvCreateVideoWriter函式使用

cvcreatevideowriter函式使用 2011 11 04 15 47 例如,cv fourcc p i m 1 是mpeg 1 codec,cv fourcc m j p g 是motion jpeg codec cv fourcc m p 4 2 mpeg 4.2 codec cv f...

CentimetersToPoints函式出錯

在word開發中,碰到centimeterstopoints函式呼叫出錯,提示未指定的錯誤的問題。解決辦法為修改centimeterstopoint函式 匯入msword.olb後的centimeterstopoint函式如下 修改後的centimeterstopoint函式如下,紅色表示的部分為增...