Poolingのnumpyによる実装

Tweet


Poolingをnumpyで実装したいときってありますよね.え?ない?まぁ,そうでしょうね.

それはともかく,numpyによるpoolingの実装例がこちら.

Source code

import numpy as np

def pooling(a,bsize=(2,2),func=np.max):
  b=np.array([
      [func(a[i:i+bsize[0],j:j+bsize[1]]) for j in range(0,a.shape[1],bsize[1])]
      for i in range(0,a.shape[0],bsize[0])
      ],dtype=a.dtype)
  return b

a=np.array([
    [11,12,13,14,15,16],
    [21,22,23,24,25,26],
    [31,32,33,34,35,36],
    [41,42,43,44,45,46],
    [51,52,53,54,55,56],
    [61,62,63,64,65,66],
    [71,72,73,74,75,76],
    [81,82,83,84,85,86],
    ],dtype=np.float64)
b=pooling(a)
print(a)
print(b)

Output

[[11. 12. 13. 14. 15. 16.]
 [21. 22. 23. 24. 25. 26.]
 [31. 32. 33. 34. 35. 36.]
 [41. 42. 43. 44. 45. 46.]
 [51. 52. 53. 54. 55. 56.]
 [61. 62. 63. 64. 65. 66.]
 [71. 72. 73. 74. 75. 76.]
 [81. 82. 83. 84. 85. 86.]]
[[22. 24. 26.]
 [42. 44. 46.]
 [62. 64. 66.]
 [82. 84. 86.]]


もどる