CNN col2im和im2col的实现

103 篇文章 8 订阅
24 篇文章 0 订阅

代码:

​
import numpy as np

def im2col(mtx, block_size):
    mtx_shape = mtx.shape

    sx = mtx_shape[0] - block_size[0] + 1
    sy = mtx_shape[1] - block_size[1] + 1

    # 如果设A为m×n的,对于[p q]的块划分,最后矩阵的行数为p×q,列数为(m−p+1)×(n−q+1)。
    result = np.empty((block_size[0] * block_size[1], sx * sy))

    # 沿着行移动,所以先保持列(i)不动,沿着行(j)走
    for i in range(sy):
        for j in range(sx):
            result[:, i * sx + j] = mtx[j:j + block_size[0], i:i + block_size[1]].ravel(order='F')

    return result

def col2im(mtx, image_size, block_size):
    p, q = block_size

    sx = image_size[0] - p + 1
    sy = image_size[1] - q + 1

    result = np.zeros(image_size)
    weight = np.zeros(image_size)  # weight记录每个单元格的数字重复加了多少遍
    col = 0

    # 沿着行移动,所以先保持列(i)不动,沿着行(j)走
    for i in range(sy):
        for j in range(sx):
            result[j:j + p, i:i + q] += mtx[:, col].reshape(block_size, order='F')
            weight[j:j + p, i:i + q] += np.ones(block_size)
            col += 1

    return result / weight

if __name__ == '__main__':
    mtx = np.around(np.random.rand(5, 5) * 100)
    print('原始矩阵:')
    print(mtx)

    a1 = im2col(mtx, (2, 3))
    print('im2col(分块大小2x3):')
    print(a1)
    b1 = col2im(a1, (5, 5), (2, 3))
    print('col2im复原:')
    print(b1)

    a2 = im2col(mtx, (3, 3))
    print('im2col(分块大小3x3):')
    print(a2)
    b2 = col2im(a2, (5, 5), (3, 3))
    print('col2im复原:')
    print(b2)

​

运行结果:

原始矩阵:
[[25. 28. 68. 75.  6.]
 [89.  1. 56. 33. 84.]
 [41. 20. 33. 59.  7.]
 [36. 20. 74. 57.  8.]
 [ 8. 50. 88. 19. 47.]]
im2col(分块大小2x3):
[[25. 89. 41. 36. 28.  1. 20. 20. 68. 56. 33. 74.]
 [89. 41. 36.  8.  1. 20. 20. 50. 56. 33. 74. 88.]
 [28.  1. 20. 20. 68. 56. 33. 74. 75. 33. 59. 57.]
 [ 1. 20. 20. 50. 56. 33. 74. 88. 33. 59. 57. 19.]
 [68. 56. 33. 74. 75. 33. 59. 57.  6. 84.  7.  8.]
 [56. 33. 74. 88. 33. 59. 57. 19. 84.  7.  8. 47.]]
col2im复原:
[[25. 28. 68. 75.  6.]
 [89.  1. 56. 33. 84.]
 [41. 20. 33. 59.  7.]
 [36. 20. 74. 57.  8.]
 [ 8. 50. 88. 19. 47.]]
im2col(分块大小3x3):
[[25. 89. 41. 28.  1. 20. 68. 56. 33.]
 [89. 41. 36.  1. 20. 20. 56. 33. 74.]
 [41. 36.  8. 20. 20. 50. 33. 74. 88.]
 [28.  1. 20. 68. 56. 33. 75. 33. 59.]
 [ 1. 20. 20. 56. 33. 74. 33. 59. 57.]
 [20. 20. 50. 33. 74. 88. 59. 57. 19.]
 [68. 56. 33. 75. 33. 59.  6. 84.  7.]
 [56. 33. 74. 33. 59. 57. 84.  7.  8.]
 [33. 74. 88. 59. 57. 19.  7.  8. 47.]]
col2im复原:
[[25. 28. 68. 75.  6.]
 [89.  1. 56. 33. 84.]
 [41. 20. 33. 59.  7.]
 [36. 20. 74. 57.  8.]
 [ 8. 50. 88. 19. 47.]]


另一种实现:

import numpy as np

def im2col(input_data, filter_h, filter_w, stride=1, pad=0):
    """

    Parameters
    ----------
    input_data : 由(数据量, 通道, 高, 长)的4维数组构成的输入数据
    filter_h : 滤波器的高
    filter_w : 滤波器的长
    stride : 步幅
    pad : 填充

    Returns
    -------
    col : 2维数组
    """
    N, C, H, W = input_data.shape
    out_h = (H + 2*pad - filter_h)//stride + 1
    out_w = (W + 2*pad - filter_w)//stride + 1

    img = np.pad(input_data, [(0,0), (0,0), (pad, pad), (pad, pad)], 'constant')
    col = np.zeros((N, C, filter_h, filter_w, out_h, out_w))

    for y in range(filter_h):
        y_max = y + stride*out_h
        for x in range(filter_w):
            x_max = x + stride*out_w
            col[:, :, y, x, :, :] = img[:, :, y:y_max:stride, x:x_max:stride]

    col = col.transpose(0, 4, 5, 1, 2, 3).reshape(N*out_h*out_w, -1)
    return col

def col2im(col, input_shape, filter_h, filter_w, stride=1, pad=0):
    """

    Parameters
    ----------
    col :
    input_shape : 输入数据的形状(例:(10, 1, 28, 28))
    filter_h :
    filter_w
    stride
    pad

    Returns
    -------

    """
    N, C, H, W = input_shape
    out_h = (H + 2*pad - filter_h)//stride + 1
    out_w = (W + 2*pad - filter_w)//stride + 1
    col = col.reshape(N, out_h, out_w, C, filter_h, filter_w).transpose(0, 3, 4, 5, 1, 2)

    img = np.zeros((N, C, H + 2*pad + stride - 1, W + 2*pad + stride - 1))
    for y in range(filter_h):
        y_max = y + stride*out_h
        for x in range(filter_w):
            x_max = x + stride*out_w
            img[:, :, y:y_max:stride, x:x_max:stride] = col[:, :, y, x, :, :]

    return img[:, :, pad:H + pad, pad:W + pad]

A=np.random.rand(1,1,28,28)
B=im2col(A,5,5)
print(B.shape)
C=col2im(B,(1,1,28,28), 5,5)
print(A)
print(C)
print(A==C)
czl@czl-VirtualBox:~/WorkSpace/py$ python3 a.py 
(576, 25)
[[[[0.30925507 0.16943751 0.65800229 0.95875119 0.22181735 0.78935377
    0.5611471  0.71773148 0.03710927 0.18242339 0.90502488 0.2917084
    0.45644893 0.23163848 0.74258785 0.96066048 0.103793   0.2438452
    0.87755956 0.99099046 0.82630757 0.25844964 0.43982919 0.71531541
    0.76605418 0.89129242 0.96892431 0.75498988]
   [0.28871325 0.01554137 0.4874278  0.54765766 0.13567841 0.43497241
    0.67625429 0.85286246 0.16363263 0.44380585 0.48894984 0.66732865
    0.39781412 0.20838005 0.78508355 0.34807437 0.60392717 0.97560132
    0.38719517 0.05144362 0.42919299 0.11942759 0.39710934 0.56367447
    0.16752852 0.40861488 0.51174168 0.33518555]
   [0.50572752 0.04328565 0.06376692 0.14967602 0.10954767 0.62548981
    0.87613525 0.67077381 0.24437231 0.36633117 0.65288815 0.42834836
    0.18131572 0.8422041  0.6732005  0.54607831 0.87231436 0.37974702
    0.78830492 0.74785099 0.01721254 0.9292132  0.92348256 0.05267913
    0.64218665 0.33215371 0.31362967 0.59620738]
   [0.98224844 0.8992224  0.34996822 0.78009485 0.25624387 0.38162907
    0.79336897 0.27143524 0.32807625 0.88439516 0.62029764 0.58107736
    0.33984692 0.89805166 0.22786957 0.7067741  0.92273607 0.83760567
    0.725111   0.94588531 0.22085246 0.58221311 0.53220109 0.26124274
    0.16587299 0.07284156 0.60241892 0.9914676 ]
   [0.59095903 0.49982909 0.1070442  0.97360356 0.41270991 0.13702843
    0.99233227 0.70982437 0.67602428 0.11064851 0.461044   0.72061232
    0.23686676 0.89743996 0.54900766 0.64177347 0.00811398 0.45831314
    0.45523755 0.03469376 0.01355815 0.16441001 0.37882577 0.03543619
    0.46812099 0.88082956 0.94454241 0.34902778]
   [0.38118405 0.45766047 0.13316004 0.99218096 0.60078394 0.0593621
    0.49699231 0.66054172 0.77262257 0.50026206 0.14023372 0.88233126
    0.08935572 0.96716801 0.82470177 0.61843937 0.89212328 0.87563421
    0.02756115 0.31035317 0.83299412 0.38875922 0.54714859 0.02499596
    0.96153546 0.97062703 0.68064864 0.28425784]
   [0.48551744 0.28666124 0.61889881 0.29460029 0.54903592 0.52967002
    0.12414246 0.55463067 0.15136569 0.70283119 0.06719044 0.82119844
    0.98340096 0.73661683 0.7927273  0.39280604 0.7377103  0.57462831
    0.35249311 0.7293912  0.40030137 0.22144661 0.64154555 0.46801262
    0.1102148  0.87533375 0.99391913 0.07502493]
   [0.77211467 0.80643504 0.86662769 0.89549014 0.13880436 0.86249188
    0.71472266 0.46143296 0.52935896 0.43103546 0.34563046 0.13154483
    0.77983907 0.25545044 0.47523772 0.87392153 0.12104372 0.63961299
    0.34064898 0.89320227 0.15053394 0.46277235 0.50827447 0.92339283
    0.09175319 0.47434151 0.79890413 0.62635338]
   [0.51702574 0.94955692 0.10160291 0.53556944 0.66128951 0.35763039
    0.68201615 0.99381399 0.30508021 0.26529833 0.85642223 0.19604374
    0.61966122 0.56028908 0.6322168  0.11322752 0.61260264 0.09045031
    0.8371358  0.979855   0.44961557 0.48082731 0.1956776  0.4375109
    0.296315   0.50660881 0.51436347 0.26123644]
   [0.60516735 0.98739527 0.81976251 0.95192912 0.86241793 0.32664674
    0.21904941 0.01049836 0.89555837 0.21879733 0.73364993 0.74397893
    0.67488672 0.69512472 0.72027684 0.46011282 0.82596174 0.9641483
    0.81965678 0.87161144 0.13250012 0.4338714  0.35937427 0.18272557
    0.32370603 0.18833978 0.15476137 0.27837697]
   [0.70588966 0.30532111 0.44565222 0.97039775 0.56653723 0.38406287
    0.6077055  0.68828362 0.86106669 0.01016379 0.29444224 0.50928238
    0.62640631 0.94835095 0.42844478 0.36047504 0.4596324  0.91463506
    0.19092089 0.58564823 0.40854919 0.07156242 0.66393201 0.16209994
    0.58434987 0.61303904 0.35334581 0.95982287]
   [0.17977933 0.41249231 0.34839803 0.14754683 0.46350267 0.55716387
    0.09136454 0.43548046 0.62397526 0.07636257 0.61237555 0.94797384
    0.25179893 0.99459724 0.53826546 0.74598127 0.06927767 0.99016501
    0.66941426 0.937525   0.08995556 0.890447   0.87823647 0.61293441
    0.44581928 0.97191793 0.99262908 0.05883808]
   [0.08186484 0.00915378 0.26332125 0.97260021 0.9911886  0.04768462
    0.4140117  0.32687971 0.23685741 0.72450575 0.13607532 0.03389397
    0.87417725 0.66711537 0.6469604  0.66595733 0.75377556 0.13060926
    0.22834049 0.54544642 0.11899126 0.23962383 0.69115536 0.86035851
    0.95611831 0.29271668 0.47012237 0.03210162]
   [0.02011724 0.17465478 0.59145115 0.34552423 0.22008345 0.78967655
    0.06910216 0.52918292 0.81630863 0.74570741 0.5854973  0.37773852
    0.4937587  0.09490281 0.71619592 0.54784222 0.2505745  0.13647399
    0.37849411 0.60617061 0.1441368  0.85540003 0.70335866 0.84920408
    0.24027601 0.90612673 0.45755863 0.7876253 ]
   [0.84021484 0.30572569 0.51418079 0.08646556 0.55625154 0.48893026
    0.70912717 0.4757645  0.58472325 0.23974579 0.06298644 0.72805323
    0.6923206  0.79607941 0.17900265 0.99390802 0.10574198 0.23342667
    0.32564825 0.9652132  0.89911338 0.52611884 0.05417476 0.99145125
    0.30954898 0.77050378 0.57034008 0.89161917]
   [0.2608916  0.86297939 0.0086417  0.80108977 0.24676915 0.22021491
    0.74842772 0.94149295 0.13555838 0.79037885 0.12412095 0.95851731
    0.32066845 0.03559272 0.73736316 0.29924552 0.88590059 0.24627875
    0.54821712 0.00988738 0.13994077 0.53879512 0.54507323 0.90317533
    0.34809384 0.46056478 0.10259827 0.51823186]
   [0.64645135 0.36412336 0.89979334 0.58138998 0.65456268 0.02824955
    0.50456315 0.36930107 0.01924547 0.32225461 0.66359888 0.46528701
    0.31359275 0.95926133 0.68011842 0.86009965 0.22273352 0.95211145
    0.64925269 0.36517558 0.5544179  0.34810014 0.79235297 0.12945008
    0.50737683 0.27430506 0.23311922 0.23887912]
   [0.10698851 0.02329926 0.27190809 0.09029885 0.44126068 0.92759123
    0.48744583 0.29286883 0.7863554  0.48094365 0.79418086 0.45834017
    0.58556643 0.81861735 0.69019279 0.20999025 0.94171298 0.3301118
    0.58481856 0.05731134 0.68993335 0.55530982 0.22487912 0.46361735
    0.85678375 0.21815621 0.64649731 0.32319553]
   [0.1354806  0.68275335 0.37000187 0.84824884 0.50260398 0.30166501
    0.92094049 0.73126231 0.86472395 0.64325348 0.52286596 0.17512249
    0.71676732 0.9803505  0.50260354 0.93493127 0.79926929 0.72737886
    0.71789299 0.30656281 0.0454161  0.77229607 0.50750487 0.74993665
    0.14173114 0.10926176 0.68457464 0.40812552]
   [0.68826786 0.26486995 0.96125501 0.30419349 0.84775949 0.43074755
    0.54800916 0.54207759 0.07387979 0.66038177 0.86420928 0.19138967
    0.50634202 0.76277039 0.72980758 0.3403772  0.8710647  0.71456691
    0.317927   0.9301498  0.74196042 0.18289587 0.56815358 0.74500616
    0.53666389 0.43714876 0.66563942 0.59832128]
   [0.79249447 0.96056595 0.89066497 0.14968069 0.45511991 0.15613498
    0.60340819 0.74777859 0.90410183 0.49420796 0.63611035 0.88432288
    0.6638805  0.89619125 0.70146878 0.850391   0.90029285 0.21939875
    0.40033834 0.67267191 0.54587614 0.7738448  0.91216707 0.69737273
    0.73520126 0.57446337 0.24084128 0.70247113]
   [0.80081165 0.20896179 0.25708771 0.46396369 0.89741127 0.92714742
    0.69274658 0.19896709 0.40279656 0.51522074 0.59082328 0.34597999
    0.12336096 0.99699812 0.05956788 0.318531   0.74980606 0.6261879
    0.0603253  0.70713415 0.2848258  0.93723044 0.51302813 0.99735012
    0.54022628 0.18135191 0.8122631  0.89811547]
   [0.70621468 0.26124592 0.37218738 0.82113393 0.34453596 0.01983219
    0.95521849 0.0605529  0.79149184 0.91119305 0.94692107 0.74603269
    0.2817147  0.64392655 0.86550813 0.67530149 0.9701393  0.46091759
    0.36208273 0.77482033 0.05222307 0.81001032 0.65949752 0.34755673
    0.95688331 0.70680914 0.74747591 0.7549644 ]
   [0.65566428 0.39058795 0.96870108 0.75361516 0.55759129 0.98615488
    0.05845372 0.76100071 0.42399033 0.29204982 0.42812448 0.00603968
    0.36479402 0.97263114 0.53028793 0.424102   0.95337892 0.19936929
    0.75807174 0.75367724 0.98876901 0.01928404 0.37109291 0.36153116
    0.94484325 0.54871709 0.09780128 0.63127826]
   [0.71640052 0.11556    0.01173875 0.62205609 0.35616337 0.34357245
    0.88551331 0.94227172 0.90737298 0.97928345 0.44580171 0.12847613
    0.78076487 0.59548219 0.40102703 0.5085637  0.20604175 0.50271614
    0.29669288 0.52013826 0.60068813 0.59418917 0.11420845 0.38212699
    0.02276358 0.59852505 0.99810432 0.31658599]
   [0.17460957 0.86656628 0.66944158 0.06200809 0.24903373 0.58085515
    0.36093573 0.73582412 0.19281325 0.27135943 0.96696229 0.13365172
    0.85163087 0.01604899 0.95092822 0.86615411 0.29184304 0.10359502
    0.10132912 0.71854473 0.34626102 0.89558975 0.92463828 0.97634505
    0.25273784 0.91470718 0.41314109 0.74870397]
   [0.61491941 0.2017124  0.72955923 0.91218639 0.03974069 0.42955276
    0.47199428 0.39210187 0.16214161 0.96074394 0.90677357 0.51211276
    0.36782391 0.66984246 0.81874713 0.92567346 0.86560203 0.6537707
    0.01345526 0.16554665 0.31872964 0.87509354 0.99275322 0.66622806
    0.68542804 0.80825868 0.59938032 0.793373  ]
   [0.69272233 0.37713337 0.37905352 0.21396054 0.55375879 0.40196032
    0.21398471 0.51226839 0.58157735 0.17364139 0.04001717 0.49787444
    0.28105904 0.35033117 0.17425426 0.29656101 0.67918275 0.96517461
    0.58874588 0.38050672 0.21512112 0.13492644 0.55061397 0.82613472
    0.4731471  0.3502615  0.22746737 0.18777691]]]]
[[[[0.30925507 0.16943751 0.65800229 0.95875119 0.22181735 0.78935377
    0.5611471  0.71773148 0.03710927 0.18242339 0.90502488 0.2917084
    0.45644893 0.23163848 0.74258785 0.96066048 0.103793   0.2438452
    0.87755956 0.99099046 0.82630757 0.25844964 0.43982919 0.71531541
    0.76605418 0.89129242 0.96892431 0.75498988]
   [0.28871325 0.01554137 0.4874278  0.54765766 0.13567841 0.43497241
    0.67625429 0.85286246 0.16363263 0.44380585 0.48894984 0.66732865
    0.39781412 0.20838005 0.78508355 0.34807437 0.60392717 0.97560132
    0.38719517 0.05144362 0.42919299 0.11942759 0.39710934 0.56367447
    0.16752852 0.40861488 0.51174168 0.33518555]
   [0.50572752 0.04328565 0.06376692 0.14967602 0.10954767 0.62548981
    0.87613525 0.67077381 0.24437231 0.36633117 0.65288815 0.42834836
    0.18131572 0.8422041  0.6732005  0.54607831 0.87231436 0.37974702
    0.78830492 0.74785099 0.01721254 0.9292132  0.92348256 0.05267913
    0.64218665 0.33215371 0.31362967 0.59620738]
   [0.98224844 0.8992224  0.34996822 0.78009485 0.25624387 0.38162907
    0.79336897 0.27143524 0.32807625 0.88439516 0.62029764 0.58107736
    0.33984692 0.89805166 0.22786957 0.7067741  0.92273607 0.83760567
    0.725111   0.94588531 0.22085246 0.58221311 0.53220109 0.26124274
    0.16587299 0.07284156 0.60241892 0.9914676 ]
   [0.59095903 0.49982909 0.1070442  0.97360356 0.41270991 0.13702843
    0.99233227 0.70982437 0.67602428 0.11064851 0.461044   0.72061232
    0.23686676 0.89743996 0.54900766 0.64177347 0.00811398 0.45831314
    0.45523755 0.03469376 0.01355815 0.16441001 0.37882577 0.03543619
    0.46812099 0.88082956 0.94454241 0.34902778]
   [0.38118405 0.45766047 0.13316004 0.99218096 0.60078394 0.0593621
    0.49699231 0.66054172 0.77262257 0.50026206 0.14023372 0.88233126
    0.08935572 0.96716801 0.82470177 0.61843937 0.89212328 0.87563421
    0.02756115 0.31035317 0.83299412 0.38875922 0.54714859 0.02499596
    0.96153546 0.97062703 0.68064864 0.28425784]
   [0.48551744 0.28666124 0.61889881 0.29460029 0.54903592 0.52967002
    0.12414246 0.55463067 0.15136569 0.70283119 0.06719044 0.82119844
    0.98340096 0.73661683 0.7927273  0.39280604 0.7377103  0.57462831
    0.35249311 0.7293912  0.40030137 0.22144661 0.64154555 0.46801262
    0.1102148  0.87533375 0.99391913 0.07502493]
   [0.77211467 0.80643504 0.86662769 0.89549014 0.13880436 0.86249188
    0.71472266 0.46143296 0.52935896 0.43103546 0.34563046 0.13154483
    0.77983907 0.25545044 0.47523772 0.87392153 0.12104372 0.63961299
    0.34064898 0.89320227 0.15053394 0.46277235 0.50827447 0.92339283
    0.09175319 0.47434151 0.79890413 0.62635338]
   [0.51702574 0.94955692 0.10160291 0.53556944 0.66128951 0.35763039
    0.68201615 0.99381399 0.30508021 0.26529833 0.85642223 0.19604374
    0.61966122 0.56028908 0.6322168  0.11322752 0.61260264 0.09045031
    0.8371358  0.979855   0.44961557 0.48082731 0.1956776  0.4375109
    0.296315   0.50660881 0.51436347 0.26123644]
   [0.60516735 0.98739527 0.81976251 0.95192912 0.86241793 0.32664674
    0.21904941 0.01049836 0.89555837 0.21879733 0.73364993 0.74397893
    0.67488672 0.69512472 0.72027684 0.46011282 0.82596174 0.9641483
    0.81965678 0.87161144 0.13250012 0.4338714  0.35937427 0.18272557
    0.32370603 0.18833978 0.15476137 0.27837697]
   [0.70588966 0.30532111 0.44565222 0.97039775 0.56653723 0.38406287
    0.6077055  0.68828362 0.86106669 0.01016379 0.29444224 0.50928238
    0.62640631 0.94835095 0.42844478 0.36047504 0.4596324  0.91463506
    0.19092089 0.58564823 0.40854919 0.07156242 0.66393201 0.16209994
    0.58434987 0.61303904 0.35334581 0.95982287]
   [0.17977933 0.41249231 0.34839803 0.14754683 0.46350267 0.55716387
    0.09136454 0.43548046 0.62397526 0.07636257 0.61237555 0.94797384
    0.25179893 0.99459724 0.53826546 0.74598127 0.06927767 0.99016501
    0.66941426 0.937525   0.08995556 0.890447   0.87823647 0.61293441
    0.44581928 0.97191793 0.99262908 0.05883808]
   [0.08186484 0.00915378 0.26332125 0.97260021 0.9911886  0.04768462
    0.4140117  0.32687971 0.23685741 0.72450575 0.13607532 0.03389397
    0.87417725 0.66711537 0.6469604  0.66595733 0.75377556 0.13060926
    0.22834049 0.54544642 0.11899126 0.23962383 0.69115536 0.86035851
    0.95611831 0.29271668 0.47012237 0.03210162]
   [0.02011724 0.17465478 0.59145115 0.34552423 0.22008345 0.78967655
    0.06910216 0.52918292 0.81630863 0.74570741 0.5854973  0.37773852
    0.4937587  0.09490281 0.71619592 0.54784222 0.2505745  0.13647399
    0.37849411 0.60617061 0.1441368  0.85540003 0.70335866 0.84920408
    0.24027601 0.90612673 0.45755863 0.7876253 ]
   [0.84021484 0.30572569 0.51418079 0.08646556 0.55625154 0.48893026
    0.70912717 0.4757645  0.58472325 0.23974579 0.06298644 0.72805323
    0.6923206  0.79607941 0.17900265 0.99390802 0.10574198 0.23342667
    0.32564825 0.9652132  0.89911338 0.52611884 0.05417476 0.99145125
    0.30954898 0.77050378 0.57034008 0.89161917]
   [0.2608916  0.86297939 0.0086417  0.80108977 0.24676915 0.22021491
    0.74842772 0.94149295 0.13555838 0.79037885 0.12412095 0.95851731
    0.32066845 0.03559272 0.73736316 0.29924552 0.88590059 0.24627875
    0.54821712 0.00988738 0.13994077 0.53879512 0.54507323 0.90317533
    0.34809384 0.46056478 0.10259827 0.51823186]
   [0.64645135 0.36412336 0.89979334 0.58138998 0.65456268 0.02824955
    0.50456315 0.36930107 0.01924547 0.32225461 0.66359888 0.46528701
    0.31359275 0.95926133 0.68011842 0.86009965 0.22273352 0.95211145
    0.64925269 0.36517558 0.5544179  0.34810014 0.79235297 0.12945008
    0.50737683 0.27430506 0.23311922 0.23887912]
   [0.10698851 0.02329926 0.27190809 0.09029885 0.44126068 0.92759123
    0.48744583 0.29286883 0.7863554  0.48094365 0.79418086 0.45834017
    0.58556643 0.81861735 0.69019279 0.20999025 0.94171298 0.3301118
    0.58481856 0.05731134 0.68993335 0.55530982 0.22487912 0.46361735
    0.85678375 0.21815621 0.64649731 0.32319553]
   [0.1354806  0.68275335 0.37000187 0.84824884 0.50260398 0.30166501
    0.92094049 0.73126231 0.86472395 0.64325348 0.52286596 0.17512249
    0.71676732 0.9803505  0.50260354 0.93493127 0.79926929 0.72737886
    0.71789299 0.30656281 0.0454161  0.77229607 0.50750487 0.74993665
    0.14173114 0.10926176 0.68457464 0.40812552]
   [0.68826786 0.26486995 0.96125501 0.30419349 0.84775949 0.43074755
    0.54800916 0.54207759 0.07387979 0.66038177 0.86420928 0.19138967
    0.50634202 0.76277039 0.72980758 0.3403772  0.8710647  0.71456691
    0.317927   0.9301498  0.74196042 0.18289587 0.56815358 0.74500616
    0.53666389 0.43714876 0.66563942 0.59832128]
   [0.79249447 0.96056595 0.89066497 0.14968069 0.45511991 0.15613498
    0.60340819 0.74777859 0.90410183 0.49420796 0.63611035 0.88432288
    0.6638805  0.89619125 0.70146878 0.850391   0.90029285 0.21939875
    0.40033834 0.67267191 0.54587614 0.7738448  0.91216707 0.69737273
    0.73520126 0.57446337 0.24084128 0.70247113]
   [0.80081165 0.20896179 0.25708771 0.46396369 0.89741127 0.92714742
    0.69274658 0.19896709 0.40279656 0.51522074 0.59082328 0.34597999
    0.12336096 0.99699812 0.05956788 0.318531   0.74980606 0.6261879
    0.0603253  0.70713415 0.2848258  0.93723044 0.51302813 0.99735012
    0.54022628 0.18135191 0.8122631  0.89811547]
   [0.70621468 0.26124592 0.37218738 0.82113393 0.34453596 0.01983219
    0.95521849 0.0605529  0.79149184 0.91119305 0.94692107 0.74603269
    0.2817147  0.64392655 0.86550813 0.67530149 0.9701393  0.46091759
    0.36208273 0.77482033 0.05222307 0.81001032 0.65949752 0.34755673
    0.95688331 0.70680914 0.74747591 0.7549644 ]
   [0.65566428 0.39058795 0.96870108 0.75361516 0.55759129 0.98615488
    0.05845372 0.76100071 0.42399033 0.29204982 0.42812448 0.00603968
    0.36479402 0.97263114 0.53028793 0.424102   0.95337892 0.19936929
    0.75807174 0.75367724 0.98876901 0.01928404 0.37109291 0.36153116
    0.94484325 0.54871709 0.09780128 0.63127826]
   [0.71640052 0.11556    0.01173875 0.62205609 0.35616337 0.34357245
    0.88551331 0.94227172 0.90737298 0.97928345 0.44580171 0.12847613
    0.78076487 0.59548219 0.40102703 0.5085637  0.20604175 0.50271614
    0.29669288 0.52013826 0.60068813 0.59418917 0.11420845 0.38212699
    0.02276358 0.59852505 0.99810432 0.31658599]
   [0.17460957 0.86656628 0.66944158 0.06200809 0.24903373 0.58085515
    0.36093573 0.73582412 0.19281325 0.27135943 0.96696229 0.13365172
    0.85163087 0.01604899 0.95092822 0.86615411 0.29184304 0.10359502
    0.10132912 0.71854473 0.34626102 0.89558975 0.92463828 0.97634505
    0.25273784 0.91470718 0.41314109 0.74870397]
   [0.61491941 0.2017124  0.72955923 0.91218639 0.03974069 0.42955276
    0.47199428 0.39210187 0.16214161 0.96074394 0.90677357 0.51211276
    0.36782391 0.66984246 0.81874713 0.92567346 0.86560203 0.6537707
    0.01345526 0.16554665 0.31872964 0.87509354 0.99275322 0.66622806
    0.68542804 0.80825868 0.59938032 0.793373  ]
   [0.69272233 0.37713337 0.37905352 0.21396054 0.55375879 0.40196032
    0.21398471 0.51226839 0.58157735 0.17364139 0.04001717 0.49787444
    0.28105904 0.35033117 0.17425426 0.29656101 0.67918275 0.96517461
    0.58874588 0.38050672 0.21512112 0.13492644 0.55061397 0.82613472
    0.4731471  0.3502615  0.22746737 0.18777691]]]]
[[[[ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]
   [ True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True  True  True  True  True  True
     True  True  True  True  True  True]]]]
czl@czl-VirtualBox:~/WorkSpace/py$ 

这个版本的实现来源于教材:深度学习入门,最原始的版本中有一个BUG,注意下图的加号

应该把+=号改为=号,以上代码就是修改后的版本,可以看到验证是正确的。

具体分析可以参考:

了解im2col函数 | 码农家园

手把手实现CNN的卷积层及池化层 | 码农家园

结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值