新生児の体重を予測することが今回多層ニューラルネットワークの作成①,②の目的だった。
TensorFlow-cookbook~using multiple layers~
そのために3つの隠れ層を持つニューラルネットワークを作成して7つの特徴量(お母さんの情報とか)を機械に教えた。
正答率は
Test Accuracy: 0.394
Train Accuracy: 0.536
と低い。この精度を上げるにはどうすればいいんだろう。(1に近づけたい)
考えたのは以下の通り
①バッチサイズ(Batch_size)の変更
②反復(iteration)の変更
③ばらつき(st_dev)の変更
④ノードの数(Weight,biasの所)変更
⑤学習率(Adam)の変更
##①バッチサイスの変更
もともとバッチサイズは100でした。
一番良かったのは32のときバッチサイズ小さくするといいんだ。へえー。でもデメリットもなんかありそう。
Batch_size | Test | Train |
---|---|---|
32 | 0.500 | 0.609 |
64 | 0.473 | 0.596 |
100 | 0.394 | 0.536 |
256 | 0.315 | 0.523 |
##②反復iterationの変更
もともと200でした
反復は回数に比例して精度が上がる。そのまんまで書いた意味
iteration | Test | Train |
---|---|---|
100 | 0.236 | 0.394 |
200 | 0.394 | 0.536 |
500 | 0.552 | 0.642 |
1000 | 0.710 | 0.768 |
##③ばらつきst_devの変更
もともと10だった
書くのがおっくうになってきた。
st_dev=2.5のときTest=0.868,Train=0.754で一番良かった。今回に限ってだけどばらつきは少ないほうが良かったのかな。
st_dev | Test | Train |
---|---|---|
2.5 | 0.868 | 0.754 |
5.0 | 0.763 | 0.735 |
10.0 | 0.394 | 0.536 |
20.0 | 0.157 | 0.357 |
50.0 | 0.157 | 0.357 |
##④ノードの数を変更
重みは1~3層で変更可能なので複雑。一つの層をいじくってどれだけよくなったかをしか調べてない。
でも今回に関しては少しノードの数を少なくしたら精度が上がった。同時にやったらまた結果は変わりそうなのできにしない。
##⑤学習率の変更
学習率は大きくすると過学習、小さくするとデコイ?になるのが値で気づけた。
少しだけ上下に値を変えると精度が上がった。
Adam | Test | Train |
---|---|---|
0.02 | 0.368 | 0.476 |
0.04 | 0.447 | 0.543 |
0.05 | 0.394 | 0.536 |
0.06 | 0.421 | 0.562 |
0.10 | 0.157 | 0.350 |
なぐりかきまとめ