この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
4_モデル学習_keras [2017/11/09] adash333 [1. モデルの設定] |
4_モデル学習_keras [2018/10/07] (現在) |
||
---|---|---|---|
ライン 19: | ライン 19: | ||
</code> | </code> | ||
- | 作成中 | ||
===== 開発環境 ===== | ===== 開発環境 ===== | ||
ライン 58: | ライン 57: | ||
- | 順に解説していきます。 | + | model.fit()関数により、モデルの学習を実行しています。 |
+ | |||
+ | 引数については、KerasのDocumentationそのままとなりますが、以下に記載します。 | ||
+ | |||
+ | ---- | ||
+ | |||
+ | x: 入力データ,Numpy 配列,あるいは Numpy 配列のリスト (モデルに複数の入力がある場合)\\ | ||
+ | y: ラベル,Numpy 配列. | ||
+ | |||
+ | batch_size: 整数.設定したサンプル数ごとに勾配の更新を行います。今回は、<wrap hi>[[(3)モデル設定(Keras)]]</wrap>のところで、batch_size = 128と設定していましたので、128が用いられています。 | ||
+ | |||
+ | epochs: 整数で,モデルを訓練するエポック数。今回は、<wrap hi>[[(3)モデル設定(Keras)]]</wrap>のところで、epochs = 3と設定していましたので、3回学習が行われています。 | ||
+ | |||
+ | verbose: 0とすると標準出力にログを出力しません. 1の場合はログをプログレスバーで標準出力,2 の場合はエポックごとに1行のログを出力します | ||
+ | |||
+ | validation_data=(x_test, y_test): ホールドアウト検証用データとして使うデータのタプル (x_val, y_val) か (x_val, y_val, val_sample_weights)。設定すると validation_split を無視します。 | ||
+ | |||
+ | ---- | ||
KerasでのModel学習の手順は上記でおしまいです。 | KerasでのModel学習の手順は上記でおしまいです。 | ||
- | <wrap hi> | + | 初めての方は、次は、<wrap hi>[[(5)結果の出力(Keras)]]</wrap>に進んでください。 |
- | 次は、</wrap>[[(5)結果の出力(Keras)]]<wrap hi>に進んでください。 | + | |
- | </wrap> | + | |
(参考) | (参考) | ||
ライン 74: | ライン 89: | ||
- | ===== kerasで損失関数(=目的関数)の利用方法 ===== | + | ===== kerasのSequentialモデルのfitメソッドについて ===== |
- | 作成中 | + | https://keras.io/ja/models/sequential/\\ |
+ | {{:pasted:20171110-035359.png}} | ||
+ | |||
+ | fit()関数は、固定のエポック数でモデルを訓練します。 | ||
+ | |||
+ | 戻り値は、History オブジェクト。History.history 属性は、実行に成功したエポックにおける訓練の損失値と評価関数値の記録と,(適用可能ならば)検証における損失値と評価関数値も記録しています。 | ||
+ | |||
+ | model.fit()の返り値を出力を変数に格納すると学習過程のパラメータの推移をプロットできます。 | ||
+ | |||
+ | 上記の例では、Historyに格納しているので、以下のようなコードで、lossやaccuracyのグラフを出力することができます。 | ||
+ | |||
+ | <code> | ||
+ | import matplotlib.pyplot as plt | ||
+ | %matplotlib inline | ||
+ | loss = history.history['loss'] | ||
+ | val_loss = history.history['val_loss'] | ||
+ | |||
+ | # lossのグラフ | ||
+ | plt.plot(range(3), loss, marker='.', label='loss') | ||
+ | plt.plot(range(3), val_loss, marker='.', label='val_loss') | ||
+ | plt.legend(loc='best', fontsize=10) | ||
+ | plt.grid() | ||
+ | plt.xlabel('epoch') | ||
+ | plt.ylabel('loss') | ||
+ | plt.show() | ||
+ | </code> | ||
+ | |||
+ | {{:pasted:20171110-040150.png}} | ||
+ | |||
+ | <code> | ||
+ | import matplotlib.pyplot as plt | ||
+ | %matplotlib inline | ||
+ | acc = history.history['acc'] | ||
+ | val_acc = history.history['val_acc'] | ||
+ | |||
+ | # accuracyのグラフ | ||
+ | plt.plot(range(3), acc, marker='.', label='acc') | ||
+ | plt.plot(range(3), val_acc, marker='.', label='val_acc') | ||
+ | plt.legend(loc='best', fontsize=10) | ||
+ | plt.grid() | ||
+ | plt.xlabel('epoch') | ||
+ | plt.ylabel('acc') | ||
+ | plt.show() | ||
+ | </code> | ||
+ | |||
+ | {{:pasted:20171110-040318.png}} | ||
- | (参考) | ||
- | 損失関数の利用方法について\\ | ||
- | https://keras.io/ja/losses/\\ | ||
- | https://keras.io/ja/objectives/ | ||
- | 機械学習における誤差関数、損失関数、etcについて\\ | ||
- | http://otasuke.goo-net.com/qa8944219.html | ||
===== Optimizerについて ===== | ===== Optimizerについて ===== |