teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

多分最終修正

2020/12/13 08:13

投稿

退会済みユーザー
answer CHANGED
@@ -16,10 +16,11 @@
16
16
 
17
17
  いけなくはないですが、これをしないとイカサマ状態になってしまいます。両方同じデータでも動くは動きますが、過学習が検出できません。
18
18
 
19
- 学校のテストでヤマを張ってヤマが丸ごと出てきたときには対応できても(本当に覚えた、というよりも過適合している状態です)、ヤマ以外の問題が出てきたときに対応できない(本当はちゃんと覚えていなかったことが露呈)となると思います。機械学習でこ防ぐのが上記の分割処理です。
19
+ 例えば、学校のテストでヤマを張ってヤマが丸ごと出てきたときには対応できても(本当に覚えた、というよりも過適合している状態です)、ヤマ以外の問題が出てきたときに対応できない(本当はちゃんと覚えていなかったことが露呈)となると思います。機械学習でこの過適合検出するため準備処理が上記の分割処理です。
20
20
 
21
- 具体的には、x_train,x_testに分ける理由は、学習用のデータと、学習できているかのテスト用(学習には使わない、テスト用だけのデータ)に分けるためです。
21
+ 具体的には、x_train,x_testに分ける理由は、学習用のデータと、学習できているかのテスト用(学習には使わない、テスト用のためだけのデータ)に分け、学習時した結果に汎化性があかどうかを検証するデータを用意するためです。
22
22
 
23
- 自前でデータを用意する時には、まとまってデータを用意して(例えば1000個)、8-9割を学習用、1割をテスト用に割り振ります。このような方法を「ホールドアウト法」と呼んでいます。
23
+ 自前でデータを用意する時には、まとまってデータを用意して(例えば1000個)、8-9割を学習用、1-2割をテスト用に割り振ります。
24
+ ※このような方法を「ホールドアウト法」と呼んでいます。データが少ない場合には「クロスバリデーション法」(使うデータを切り替えながらホールドアウト法を複数回行う方法)も用いられます。
24
25
 
25
26
  これでいかがでしょうか?

3

修正3

2020/12/13 08:13

投稿

退会済みユーザー
answer CHANGED
@@ -5,17 +5,20 @@
5
5
  画像自体が`x_○○`、犬や猫のラベル(正解情報)が`y_○○`に当たります。この時、ラベルをクラスと表現することがあると思います。例えば、犬のクラスが0、猫のクラスが1、画像が10枚あれば、`y_train = np.asarray([0,1,1,0,1,0,1,0,1,1])`のような感じです。
6
6
  ※もしTensorflowを使うのであれば、ラベル情報の最小値は0から始まらないと学習がまともにできない(1から始まるといくら学習しても学習の正解率がゼロになります)ので注意してください。
7
7
 
8
+ **クラス**:犬、猫等に相当。数値で言えば0,1,2,...
9
+ **ラベル**:画像とセットの正解データ。pythonで言えば、np.asarray([0,1,0,0,1,1,...])
10
+
8
11
  学習させる時には、`model.fit(x_train, y_train)`のような形になります。
9
12
  評価する時には、`model.predict([何かしらの画像])`となります。もし評価画像が二枚あるのであれば、`model.predict([画像1,画像2])`のようになります。
10
13
  この時、学習時も評価時も、通常のフォーマットは(枚数,幅,高さ,ch数)の形式です。
11
14
 
12
15
  > データの配列を2つ用意しておかないといけないのでしょうか?
13
16
 
14
- いけなくはないですが、これをしないとイカサマ状態になってしまいます。
17
+ いけなくはないですが、これをしないとイカサマ状態になってしまいます。両方同じデータでも動くは動きますが、過学習が検出できません。
15
18
 
16
19
  学校のテストでヤマを張ってヤマが丸ごと出てきたときには対応できても(本当に覚えた、というよりも過適合している状態です)、ヤマ以外の問題が出てきたときに対応できない(本当はちゃんと覚えていなかったことが露呈)となると思います。機械学習でこれを防ぐのが上記の分割処理です。
17
20
 
18
- 具体的には、x_train,x_testに分ける理由は、学習用のデータと、学習できているかのテスト用(学習には使わない、テスト用だけのデータ)に分けるためです。両方同じデータでも動くは動きますが、過学習が検出できません。
21
+ 具体的には、x_train,x_testに分ける理由は、学習用のデータと、学習できているかのテスト用(学習には使わない、テスト用だけのデータ)に分けるためです。
19
22
 
20
23
  自前でデータを用意する時には、まとまってデータを用意して(例えば1000個)、8-9割を学習用、1割をテスト用に割り振ります。このような方法を「ホールドアウト法」と呼んでいます。
21
24
 

2

修正2

2020/12/13 07:15

投稿

退会済みユーザー
answer CHANGED
@@ -11,9 +11,12 @@
11
11
 
12
12
  > データの配列を2つ用意しておかないといけないのでしょうか?
13
13
 
14
- x_train,x_testに分る理由、学習用のデータと、テスト用(学習には使わない、どもちゃん学習できているかどうかを確かめる用)のデータに分けるためです。両方同じデータでも動くは動きますが、過学習が検出できません
14
+ なくはないですがをしないイカサマ状態になっしまいます。
15
15
 
16
- 学校のテストでヤマを張ってヤマが丸ごと出てきたときには対応できても(本当に覚えた、というよりも過適合している状態です)、以外の問題が出てきたときに対応できない(本当はちゃんと覚えていなかったことが露呈)となると思います。機械学習でこれを防ぐのが上記の分割処理です。
16
+ 学校のテストでヤマを張ってヤマが丸ごと出てきたときには対応できても(本当に覚えた、というよりも過適合している状態です)、ヤマ以外の問題が出てきたときに対応できない(本当はちゃんと覚えていなかったことが露呈)となると思います。機械学習でこれを防ぐのが上記の分割処理です。
17
+
18
+ 具体的には、x_train,x_testに分ける理由は、学習用のデータと、学習できているかのテスト用(学習には使わない、テスト用だけのデータ)に分けるためです。両方同じデータでも動くは動きますが、過学習が検出できません。
19
+
17
20
  自前でデータを用意する時には、まとまってデータを用意して(例えば1000個)、8-9割を学習用、1割をテスト用に割り振ります。このような方法を「ホールドアウト法」と呼んでいます。
18
21
 
19
22
  これでいかがでしょうか?

1

日本語の修正

2020/12/13 07:12

投稿

退会済みユーザー
answer CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  学習させる時には、`model.fit(x_train, y_train)`のような形になります。
9
9
  評価する時には、`model.predict([何かしらの画像])`となります。もし評価画像が二枚あるのであれば、`model.predict([画像1,画像2])`のようになります。
10
- この時、学習時も評価時も、通常フォーマット(shape)は(枚数,幅,高さ,ch数)の形式です。
10
+ この時、学習時も評価時も、通常フォーマットは(枚数,幅,高さ,ch数)の形式です。
11
11
 
12
12
  > データの配列を2つ用意しておかないといけないのでしょうか?
13
13