FANN fann_train - eiichiromomma/CVMLAB GitHub Wiki

(FANN) fann_train*

fann_train

入力セットに対して学習をすると共に終了条件をセットする。

  FANN_EXTERNAL void FANN_API fann_train( struct  fann  * ann,
    fann_type  * input,
    fann_type  * desired_output )

インクリメンタル学習(fann_train_enum参照: FANN_TRAIN_INCREMENTAL)にしか使わない。

引数

  • ann
    • ニューラルネットワーク構造体
  • input
    • 入力の行列。fann_get_num_inputと同じ大きさにすること。(エラーチェックをしないと思われる)
  • desired_output
    • 終了条件の行列。fann_get_num_outputと同じ大きさにすること。(上と同様)

fann_train_on_file

fann_train_on_dataと同じだが学習データをファイルから直接読み込む。

  FANN_EXTERNAL void FANN_API fann_train_on_file(
      struct  fann  * ann,
      const  char  * filename,
      unsigned  int   max_epochs,
      unsigned  int   epochs_between_reports,
       float   desired_error
  )

fann_train_on_data

データに基づいて学習を行なう。

  FANN_EXTERNAL void FANN_API fann_train_on_data(
      struct  fann  * ann,
      struct  fann_train_data  * data,
      unsigned  int   max_epochs,
      unsigned  int   epochs_between_reports,
       float   desired_error
  )

fann_set_training_algorithmで設定したアルゴリズムで学習を行なうと共にパラメータを設定する。

引数

  • ann
    • ネットワーク構造体
  • data
    • 学習に使うデータ
  • max_epochs
    • 何回まで学習を許可するか。(収束しないときの終了条件にもなる)
  • epochs_between_reports
    • 何回おきに二乗誤差を表示するか。0だと表示しない。
  • desired_error
    • 終了条件。fann_get_MSEまたはfann_get_bit_failで得る値でfann_set_train_stop_functionでどちらかを決める。

epochs_between_reportsごとに表示を行なわせる際、fann_set_callbackを使うと表示をカスタマイズできる。

fann_train_enum

アルゴリズムはstruct fann_train_dataと共にfann_train_on_datafann_train_on_fileで使われる。

  • FANN_TRAIN_INCREMENTAL
    • 標準的なBP法のアルゴリズム。1つのトレーニングパターン毎に重みを更新する。
  • FANN_TRAIN_BATCH
    • 標準的なBP法のアルゴリズム。全トレーニングパターンの二乗誤差を求めてから重みを更新する。見込で更新をする上の方法より但しいトレーニングが出来るが学習に時間がかかる。
  • FANN_TRAIN_RPROP
    • 多くの問題で良い結果を出す拡張されたアルゴリズム。learning rateを用いない。RPROPの内部パラメータは弄らないほうが良い。実際にはIgelとHuskenによるiRPROPアルゴリズム(2000年)を使っている。
  • FANN_TRAIN_QUICKRPROP
    • 上に同じ

fann_train_data

学習に使うデータを入れる構造体

絶対に直接弄ってはいけないが、提供されている関数を使えば変更できる。