質問編集履歴
4
コードを分けた
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
aidemyに使われていたCNNと層よりも、より層を増やして適当に作った自作CNNが明らかに精度が悪い。
|
4
4
|
|
5
5
|
### 学習結果
|
6
|
-
**CNN1 (aidemy版)**
|
7
6
|
|
7
|
+
```**CNN1 (aidemy版)**
|
8
8
|
//モデル定義
|
9
9
|
model = Sequential()
|
10
10
|
model.add(Conv2D(32, (3, 3), padding='same',
|
@@ -43,9 +43,10 @@
|
|
43
43
|
)
|
44
44
|
|
45
45
|

|
46
|
-
|
46
|
+
```
|
47
47
|
|
48
|
+
|
48
|
-
**CNN2(自作版)**
|
49
|
+
```**CNN2(自作版)**
|
49
50
|
//モデル定義
|
50
51
|
ori1 = Sequential()
|
51
52
|
ori1.add(Conv2D(256, (3, 3), padding='same', input_shape=X_train.shape[1:]))
|
@@ -92,13 +93,15 @@
|
|
92
93
|
verbose=1,
|
93
94
|
validation_split=0.3
|
94
95
|
)
|
96
|
+
```
|
95
97
|

|
96
98
|
|
99
|
+
|
97
100
|
## ダメな部分
|
98
101
|
してはいけないこと、推奨されていないことをしてしまっている、このdropoutやmaxpoolingの位置や数字、層の順序やパラメータで明らかに間違っている等があれば教えていただきたいです。よろしくお願いします。
|
99
102
|
|
100
103
|
## 改善したCNN
|
101
|
-
### ori2 -- (Conv2D(32, (3, 3)))固定に
|
104
|
+
```### ori2 -- (Conv2D(32, (3, 3)))固定に
|
102
105
|
ori2 = Sequential()
|
103
106
|
ori2.add(Conv2D(32, (3, 3), padding='same', input_shape=X_train.shape[1:]))
|
104
107
|
ori2.add(Activation("relu"))
|
@@ -131,9 +134,11 @@
|
|
131
134
|
ori2.add(Dropout(0.5))
|
132
135
|
ori2.add(Dense(10))
|
133
136
|
ori2.add(Activation("softmax"))
|
137
|
+
```
|
134
138
|

|
135
139
|
Conv32固定だとダメな模様?
|
136
140
|
|
141
|
+
```
|
137
142
|
### ori3 Dropoutを徐々に増加、batch_sizeを大きめに100に変更
|
138
143
|
ori3 = Sequential()
|
139
144
|
ori3.add(Conv2D(32, (3, 3), padding='same', input_shape=X_train.shape[1:]))
|
@@ -167,5 +172,6 @@
|
|
167
172
|
ori3.add(Dropout(0.5))
|
168
173
|
ori3.add(Dense(10))
|
169
174
|
ori3.add(Activation("softmax"))
|
175
|
+
```
|
170
176
|

|
171
177
|
77%くらいまで上昇しました。90%とかそこまでは求めないとしても、80%とかどうやって出すんでしょう。
|
3
修正モデルを追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -132,4 +132,40 @@
|
|
132
132
|
ori2.add(Dense(10))
|
133
133
|
ori2.add(Activation("softmax"))
|
134
134
|

|
135
|
-
Conv32固定だとダメな模様?
|
135
|
+
Conv32固定だとダメな模様?
|
136
|
+
|
137
|
+
### ori3 Dropoutを徐々に増加、batch_sizeを大きめに100に変更
|
138
|
+
ori3 = Sequential()
|
139
|
+
ori3.add(Conv2D(32, (3, 3), padding='same', input_shape=X_train.shape[1:]))
|
140
|
+
ori3.add(Activation("relu"))
|
141
|
+
ori3.add(Conv2D(32, (3, 3)))
|
142
|
+
ori3.add(Dropout(0.1))
|
143
|
+
ori3.add(Activation("relu"))
|
144
|
+
ori3.add(MaxPool2D(pool_size=(2, 2)))
|
145
|
+
ori3.add(Dropout(0.1))
|
146
|
+
|
147
|
+
ori3.add(Conv2D(64, (3, 3)))
|
148
|
+
ori3.add(Activation("relu"))
|
149
|
+
ori3.add(Dropout(0.2))
|
150
|
+
ori3.add(Conv2D(64, (3, 3)))
|
151
|
+
ori3.add(Activation("relu"))
|
152
|
+
ori3.add(MaxPool2D(pool_size=(2, 2)))
|
153
|
+
ori3.add(Dropout(0.2))
|
154
|
+
|
155
|
+
ori3.add(Conv2D(128, (3, 3)))
|
156
|
+
ori3.add(Activation("relu"))
|
157
|
+
ori3.add(Dropout(0.3))
|
158
|
+
ori3.add(Conv2D(128, (3, 3)))
|
159
|
+
ori3.add(Activation("relu"))
|
160
|
+
|
161
|
+
ori3.add(Flatten())
|
162
|
+
ori3.add(Dense(512))
|
163
|
+
ori3.add(Activation('relu'))
|
164
|
+
ori3.add(Dropout(0.4))
|
165
|
+
ori3.add(Dense(256))
|
166
|
+
ori3.add(Activation('relu'))
|
167
|
+
ori3.add(Dropout(0.5))
|
168
|
+
ori3.add(Dense(10))
|
169
|
+
ori3.add(Activation("softmax"))
|
170
|
+

|
171
|
+
77%くらいまで上昇しました。90%とかそこまでは求めないとしても、80%とかどうやって出すんでしょう。
|
2
ori2の学習結果を追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -98,6 +98,7 @@
|
|
98
98
|
してはいけないこと、推奨されていないことをしてしまっている、このdropoutやmaxpoolingの位置や数字、層の順序やパラメータで明らかに間違っている等があれば教えていただきたいです。よろしくお願いします。
|
99
99
|
|
100
100
|
## 改善したCNN
|
101
|
+
### ori2 -- (Conv2D(32, (3, 3)))固定に
|
101
102
|
ori2 = Sequential()
|
102
103
|
ori2.add(Conv2D(32, (3, 3), padding='same', input_shape=X_train.shape[1:]))
|
103
104
|
ori2.add(Activation("relu"))
|
@@ -129,4 +130,6 @@
|
|
129
130
|
ori2.add(Activation('relu'))
|
130
131
|
ori2.add(Dropout(0.5))
|
131
132
|
ori2.add(Dense(10))
|
132
|
-
ori2.add(Activation("softmax"))
|
133
|
+
ori2.add(Activation("softmax"))
|
134
|
+

|
135
|
+
Conv32固定だとダメな模様?
|
1
改善版のCNNを追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -95,4 +95,38 @@
|
|
95
95
|

|
96
96
|
|
97
97
|
## ダメな部分
|
98
|
-
してはいけないこと、推奨されていないことをしてしまっている、このdropoutやmaxpoolingの位置や数字、層の順序やパラメータで明らかに間違っている等があれば教えていただきたいです。よろしくお願いします。
|
98
|
+
してはいけないこと、推奨されていないことをしてしまっている、このdropoutやmaxpoolingの位置や数字、層の順序やパラメータで明らかに間違っている等があれば教えていただきたいです。よろしくお願いします。
|
99
|
+
|
100
|
+
## 改善したCNN
|
101
|
+
ori2 = Sequential()
|
102
|
+
ori2.add(Conv2D(32, (3, 3), padding='same', input_shape=X_train.shape[1:]))
|
103
|
+
ori2.add(Activation("relu"))
|
104
|
+
ori2.add(Conv2D(32, (3, 3)))
|
105
|
+
ori2.add(Dropout(0.5))
|
106
|
+
ori2.add(Activation("relu"))
|
107
|
+
ori2.add(MaxPool2D(pool_size=(2, 2)))
|
108
|
+
ori2.add(Dropout(0.5))
|
109
|
+
|
110
|
+
ori2.add(Conv2D(32, (3, 3)))
|
111
|
+
ori2.add(Activation("relu"))
|
112
|
+
ori2.add(Dropout(0.5))
|
113
|
+
ori2.add(Conv2D(32, (3, 3)))
|
114
|
+
ori2.add(Activation("relu"))
|
115
|
+
ori2.add(MaxPool2D(pool_size=(2, 2)))
|
116
|
+
ori2.add(Dropout(0.5))
|
117
|
+
|
118
|
+
ori2.add(Conv2D(32, (3, 3)))
|
119
|
+
ori2.add(Activation("relu"))
|
120
|
+
ori2.add(Dropout(0.5))
|
121
|
+
ori2.add(Conv2D(32, (3, 3)))
|
122
|
+
ori2.add(Activation("relu"))
|
123
|
+
|
124
|
+
ori2.add(Flatten())
|
125
|
+
ori2.add(Dense(512))
|
126
|
+
ori2.add(Activation('relu'))
|
127
|
+
ori2.add(Dropout(0.5))
|
128
|
+
ori2.add(Dense(256))
|
129
|
+
ori2.add(Activation('relu'))
|
130
|
+
ori2.add(Dropout(0.5))
|
131
|
+
ori2.add(Dense(10))
|
132
|
+
ori2.add(Activation("softmax"))
|