第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在python中執(zhí)行反向相關(guān)/卷積

如何在python中執(zhí)行反向相關(guān)/卷積

浮云間 2022-07-05 17:38:10
我試圖在 2 個矩陣上執(zhí)行反向相關(guān)(至少我認為它是這樣的)以獲得結(jié)果矩陣。注意:反向卷積也有效,因為我將其應(yīng)用于 CNN。我有以下兩個矩陣:vals:[[ 2  1 -3 -4 -4] [ 2 -3  3  1  2] [ 2  5 -6  6 -2] [-5  4  1  5  4] [ 0  0  1 -3 -4]]w0:[[[0,  1, -1],  [1, -1,  0],  [0,  0,  0]], [[1,  0,  0],  [0, -1,  1],  [1,  0,  1]], [[ 1, -1,  0],  [-1,  0, -1],  [-1,  0,  1]]]我本質(zhì)上想應(yīng)用一個滑動窗口,除了在這種情況下,所有的值w0都乘以 中每個點的標量值vals,然后加上相鄰的值。假設(shè)步幅為 1,填充相同(wrt vals),下面的代碼給出了我想要的結(jié)果:concat = np.zeros((3,7,7))for k in range(len(w0)):    for i in range(len(vals)):        for j in range(len(vals[i])):            v = w0[k] * vals[i][j]            concat[k][i:i+v.shape[0], j:j+v.shape[1]] += vprint(concat)導致:[[[  0.   2.  -1.  -4.  -1.   0.   4.]  [  2.   1.  -9.   5.  -2.   5.  -2.]  [  2.  -3.   9. -13.  13. -10.   2.]  [  2.  -2.  -2.   9.  -4.   1.  -4.]  [ -5.   9.  -3.   5.  -5.  -5.   4.]  [  0.   0.   1.  -4.  -1.   4.   0.]  [  0.   0.   0.   0.   0.   0.   0.]] [[  2.   1.  -3.  -4.  -4.   0.   0.]  [  2.  -5.   4.   5.   3.   0.  -4.]  [  4.   4.  -2.  -3.  -7.  -5.  -2.]  [ -3.  -1.   3.  14.  -3.   9.   0.]  [  2.  10. -12.  11. -16.   7.   2.]  [ -5.   4.  -4.   8.   9.   6.   0.]  [  0.   0.   1.  -3.  -3.  -3.  -4.]] [[  2.  -1.  -4.  -1.   0.   4.   0.]  [  0.  -6.   7.   1.   8.   2.   4.]  [ -2.   5. -11.  19. -12.  -3.  -6.]  [ -9.   7.   0. -11.   8.  -9.   4.]  [  3.  -9.  13. -14. -10.   5.  -6.]  [  5.  -4.  -7.   2.   0.   8.   8.]  [  0.   0.  -1.   3.   5.  -3.  -4.]]]然后我會縮小以排除填充,所以:print(concat[:,1:-1, 1:-1])>>> [[[  1.  -9.   5.  -2.   5.]      [ -3.   9. -13.  13. -10.]      [ -2.  -2.   9.  -4.   1.]      [  9.  -3.   5.  -5.  -5.]      [  0.   1.  -4.  -1.   4.]]     [[ -5.   4.   5.   3.   0.]      [  4.  -2.  -3.  -7.  -5.]      [ -1.   3.  14.  -3.   9.]      [ 10. -12.  11. -16.   7.]      [  4.  -4.   8.   9.   6.]]兩個結(jié)果中的任何一個concat都可以,但最好是包含填充的那個。有誰知道不使用python循環(huán)的方法?我更喜歡使用 numpy 或其他一些庫,因為它一定會比我的代碼更快地執(zhí)行相同的計算。
查看完整描述

2 回答

?
搖曳的薔薇

TA貢獻1793條經(jīng)驗 獲得超6個贊

scipy.signal的convolve實際上是你想要的:


from scipy.signal import convolve


convolve(vals[None, :, :], w0)[:, 1:-1, 1:-1]

Out[]: 

array([[[  1,  -9,   5,  -2,   5],

        [ -3,   9, -13,  13, -10],

        [ -2,  -2,   9,  -4,   1],

        [  9,  -3,   5,  -5,  -5],

        [  0,   1,  -4,  -1,   4]],


       [[ -5,   4,   5,   3,   0],

        [  4,  -2,  -3,  -7,  -5],

        [ -1,   3,  14,  -3,   9],

        [ 10, -12,  11, -16,   7],

        [  4,  -4,   8,   9,   6]],


       [[ -6,   7,   1,   8,   2],

        [  5, -11,  19, -12,  -3],

        [  7,   0, -11,   8,  -9],

        [ -9,  13, -14, -10,   5],

        [ -4,  -7,   2,   0,   8]]])


查看完整回答
反對 回復(fù) 2022-07-05
?
慕少森

TA貢獻2019條經(jīng)驗 獲得超9個贊

你可以看看scipy.ndimage.filters.convolve


例如:


>>> a = np.array([[1, 2, 0, 0],

....    [5, 3, 0, 4],

....    [0, 0, 0, 7],

....    [9, 3, 0, 0]])

>>> k = np.array([[1,1,1],[1,1,0],[1,0,0]])

>>> from scipy import ndimage

>>> ndimage.convolve(a, k, mode='constant', cval=0.0)

array([[11, 10,  7,  4],

       [10,  3, 11, 11],

       [15, 12, 14,  7],

       [12,  3,  7,  0]])


查看完整回答
反對 回復(fù) 2022-07-05
  • 2 回答
  • 0 關(guān)注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號