回答編集履歴
7
一部修正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
- データを増やす。 *データ拡張を含む(画像解析
|
9
|
+
- データを増やす。 *データ拡張を含む(画像解析におけるデータ拡張は常識的な手法)
|
10
10
|
|
11
11
|
- モデルを単純化する(与えられた問題やデータに対して、モデルが複雑すぎる)。
|
12
12
|
|
6
一部修正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
- データを増やす。 *データ拡張を含む
|
9
|
+
- データを増やす。 *データ拡張を含む(画像解析ではデータ拡張は常識的な手法)
|
10
10
|
|
11
11
|
- モデルを単純化する(与えられた問題やデータに対して、モデルが複雑すぎる)。
|
12
12
|
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
- 大量の類似分野のデータで学習済のモデルを元に、転移学習やファインチューニングをする。
|
16
16
|
|
17
|
-
- BatchNormalizationを活用する。
|
17
|
+
- BatchNormalizationを活用する。 *簡単に効果を得やすい
|
18
18
|
|
19
19
|
- Dropoutを活用する。 *BNに対して効果は低く、補完程度の役割
|
20
20
|
|
5
一部修正
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
- モデルを単純化する(与えられた問題やデータに対して、モデルが複雑すぎる)。
|
12
12
|
|
13
|
-
- データの汎用的な特徴を
|
13
|
+
- データの汎用的な特徴を捉えられるように、特徴量選択を工夫したり、モデルを見直したりする。 *ResNetもその1つ
|
14
14
|
|
15
15
|
- 大量の類似分野のデータで学習済のモデルを元に、転移学習やファインチューニングをする。
|
16
16
|
|
4
一部修正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
- データを増やす。 *
|
9
|
+
- データを増やす。 *データ拡張を含む
|
10
10
|
|
11
11
|
- モデルを単純化する(与えられた問題やデータに対して、モデルが複雑すぎる)。
|
12
12
|
|
@@ -46,16 +46,6 @@
|
|
46
46
|
|
47
47
|
|
48
48
|
|
49
|
-
これでも十分な結果だと思いますが、さらに精度を上げるには、以下のような打ち手が一般的ですので、試してみてください。
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
- データ拡張
|
54
|
-
|
55
|
-
- ResNetモデルの転移学習やファインチューニング
|
56
|
-
|
57
|
-
|
58
|
-
|
59
49
|
最後に試したコードを示します。Colabで実行していますが、TPUを利用しているため、質問者様のコードからだいぶ変わっていると思います。
|
60
50
|
|
61
51
|
|
3
補足追記
test
CHANGED
@@ -2,6 +2,26 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
+
過学習の対策としては、以下が推奨されます。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
- データを増やす。 *後述するデータ拡張など
|
10
|
+
|
11
|
+
- モデルを単純化する(与えられた問題やデータに対して、モデルが複雑すぎる)。
|
12
|
+
|
13
|
+
- データの汎用的な特徴を表現する特徴量選択を工夫したり、モデルを見直したりする。 *ResNetもその1つ
|
14
|
+
|
15
|
+
- 大量の類似分野のデータで学習済のモデルを元に、転移学習やファインチューニングをする。
|
16
|
+
|
17
|
+
- BatchNormalizationを活用する。
|
18
|
+
|
19
|
+
- Dropoutを活用する。 *BNに対して効果は低く、補完程度の役割
|
20
|
+
|
21
|
+
- 正則化する。 *古い教科書には記述されているが、ほぼ絶滅した手法
|
22
|
+
|
23
|
+
|
24
|
+
|
5
25
|
Cifar10のデータセットから5クラスを取り出して、質問者様のモデルを訓練してみました。
|
6
26
|
|
7
27
|
|
2
一部修正
test
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
結論としては、BatchNormalizationを適用するとうまくいくと思います。
|
2
|
+
|
3
|
+
|
4
|
+
|
1
5
|
Cifar10のデータセットから5クラスを取り出して、質問者様のモデルを訓練してみました。
|
2
6
|
|
3
7
|
|
@@ -10,7 +14,7 @@
|
|
10
14
|
|
11
15
|
|
12
16
|
|
13
|
-
結果はこちらです。
|
17
|
+
結果はこちらです。質問者様と異なるデータセットを使っていますので、参考程度にしてください。
|
14
18
|
|
15
19
|
|
16
20
|
|
1
一部修正
test
CHANGED
@@ -58,17 +58,13 @@
|
|
58
58
|
|
59
59
|
num = 5
|
60
60
|
|
61
|
-
X_train = x_train[y_train[:,0] < num]
|
61
|
+
X_train = x_train[y_train[:,0] < num].astype('float32') / 255.0
|
62
62
|
|
63
63
|
y_train = to_categorical(y_train[y_train[:,0] < num], num).astype('float32')
|
64
64
|
|
65
|
-
X_test = x_test[y_test[:,0] < num]
|
65
|
+
X_test = x_test[y_test[:,0] < num].astype('float32') / 255.0
|
66
66
|
|
67
67
|
y_test = to_categorical(y_test[y_test[:,0] < num], num).astype('float32')
|
68
|
-
|
69
|
-
x_train = x_train.astype('float32') / 255.0
|
70
|
-
|
71
|
-
x_test = x_test.astype('float32') / 255.0
|
72
68
|
|
73
69
|
|
74
70
|
|