回答編集履歴

4

修正

2020/04/26 04:42

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -102,7 +102,7 @@
102
102
 
103
103
 
104
104
 
105
- ## numpy の実装例を stride trick を使って簡潔に書いたもの
105
+ ## numpy の実装例を stride trick を使って書いた
106
106
 
107
107
 
108
108
 

3

修正

2020/04/26 04:42

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -42,7 +42,67 @@
42
42
 
43
43
 
44
44
 
45
- ## numpy を使う場合
45
+ ## numpy を使った実装例
46
+
47
+
48
+
49
+ ```python
50
+
51
+ a = np.array(
52
+
53
+ [
54
+
55
+ [10, 15, 12, 6, 4],
56
+
57
+ [10, 12, 11, 6, 6],
58
+
59
+ [15, 14, 14, 3, 1],
60
+
61
+ [3, 5, 2, 3, 5],
62
+
63
+ [3, 2, 3, 5, 2],
64
+
65
+ ]
66
+
67
+ )
68
+
69
+ filter_size = (3, 3)
70
+
71
+
72
+
73
+ # フィルタリング後の出力サイズはパディングなしの場合
74
+
75
+ # (高さ - フィルタの高さ + 1, 幅 - フィルタの幅 + 1)
76
+
77
+ out_h = a.shape[0] - filter_size[0] + 1
78
+
79
+ out_w = a.shape[1] - filter_size[1] + 1
80
+
81
+
82
+
83
+ output = np.empty((out_h, out_w), dtype=a.dtype)
84
+
85
+
86
+
87
+ for i in range(a.shape[0] - 2):
88
+
89
+ for j in range(a.shape[1] - 2):
90
+
91
+ window = np.array(a[i : i + 3, j : j + 3])
92
+
93
+ print(f"i = {i}, j = {j}\n", window)
94
+
95
+ output[i, j] = window.mean()
96
+
97
+
98
+
99
+ print(output)
100
+
101
+ ```
102
+
103
+
104
+
105
+ ## numpy の実装例を stride trick を使って簡潔に書いたもの
46
106
 
47
107
 
48
108
 

2

修正

2020/04/26 04:42

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -76,6 +76,10 @@
76
76
 
77
77
  filter_size = (3, 3)
78
78
 
79
+ # フィルタリング後の出力サイズはパディングなしの場合
80
+
81
+ # (高さ - フィルタの高さ + 1, 幅 - フィルタの幅 + 1) なので
82
+
79
83
  output_size = tuple(np.subtract(a.shape, filter_size) + 1)
80
84
 
81
85
 

1

修正

2020/04/26 04:29

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -100,7 +100,7 @@
100
100
 
101
101
  # 平均フィルタ
102
102
 
103
- median = view.mean(axis=(2, 3))
103
+ median = np.mean(view, axis=(2, 3))
104
104
 
105
105
  print("平均フィルタ", median.astype(int))
106
106