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_dataやfann_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
学習に使うデータを入れる構造体
絶対に直接弄ってはいけないが、提供されている関数を使えば変更できる。