FANN fann_ - eiichiromomma/CVMLAB GitHub Wiki
FANN) fann_*
(fann_init_weights
Widrow+Nguyenのアルゴリズムを用いて重みを初期化する。
FANN_EXTERNAL void FANN_API fann_init_weights(
struct fann *ann,
struct fann_train_data *train_data
)
学習を高速に行なうための同アルゴリズムを使った初期化でfann_randomize_weightsと用途は同じ。とは言っても必ず上手く行くとは限らず、ランダムな初期値を使った方が上手く行く場合もある。
このアルゴリズムは入力データのレンジが必要なので第二引数にdataを使う。
fann_save
ネットワークを保存する。
FANN_EXTERNAL int FANN_API fann_save( struct fann * ann,
const char * configuration_file )
このファイルにはfann_create_from_fileでネットワークを作成するのに必要な情報が全て保存されている。
fann_set_callback, fann_set_error_logについては環境の違う状態で使われた時に予期せぬ失敗の原因になるので保存されない。 また、学習中に一時的に生じる二乗誤差についても保存されない。
返り値
0が成功。-1が失敗。
fann_stopfunc_enum
学習の終了条件
- FANN_STOPFUNC_MSE
- 二乗誤差
- FANN_STOPFUNC_BIT
- fann_get_bit_fail_limit, fann_set_bit_fail_limit参照。失敗ビット数を条件にする。
fann_read_train_from_file
学習データをファイルから読み込む。
FANN_EXTERNAL struct fann_train_data *FANN_API fann_read_train_from_file(
const char * filename
)
ファイルのフォーマットは以下の形式にする。
学習データ数 入力の個数 出力の個数
スペース区切りの入力データ
スペース区切りの出力データ
.
.
.
スペース区切りの入力データ
スペース区切りの出力データ
fann_reset_MSE
ネットワークの二乗誤差をリセットする。
FANN_EXTERNAL void FANN_API fann_reset_MSE( struct fann * ann )
失敗ビットもリセットする。
fann_randomize_weights
重みをmin_weightからmax_weightにする。
FANN_EXTERNAL void FANN_API
fann_randomize_weights(struct fann *ann,
fann_type min_weight,
fann_type max_weight)
この関数を使わずに何も指定しない場合は-0.1から0.1
fann_run
入力データをニューラルネットワークに渡し、出力を配列で返す。
FANN_EXTERNAL fann_type * FANN_API fann_run( struct fann * ann,
fann_type * input )
配列の数は出力層数と同じ。
fann_print_parameters
ネットワークの全パラメータを表示。
FANN_EXTERNAL void FANN_API fann_print_parameters( struct fann * ann )
fann_print_connections
コンパクトなわかりやすい行列でネットワークの接続を表示する。
FANN_EXTERNAL void FANN_API fann_print_connections( struct fann * ann )
例としてxor問題を(2 2 1)のネットワークで学習した場合の同関数の出力を示す。
Layer / Neuron 012345
L 1 / N 3 BBa...
L 1 / N 4 BBA...
L 1 / N 5 ......
L 2 / N 6 ...BBA
L 2 / N 7 ......
このネットワークは5つのrealニューロンと2つのバイアスニューロンからなる。 7つのニューロンは0から6番が振られる。ニューロンの接続は行列から分かり、"."は接続していないことを示す。アルファベッド文字はa-zでどれだけ接続が強固かを示す。2つの中間層のrealニューロン(layer1のニューロン3、4)は全段のニューロンと接続しており、それは上2行から分かる。出力ニューロンのニューロン6は中間層の3-5のニューロンと接続していることが4行目から分かる。
fann_length_train_data
学習データのパターン数を返す。
FANN_EXTERNAL unsigned int FANN_API fann_length_train_data(
struct fann_train_data * data
)
fann_errorfunc_enum
学習で誤差を求めるのに使う関数
-
FANN_ERRORFUNC_LINEAR
- 標準的な線形関数
-
FANN_ERRORFUNC_TANH
- tanh関数。低learning rateでは必須で大抵良い結果をもたらす。特に出力が目標から大きく外れているときにアグレッシブに働く。但し、Cascade2を使う際には推奨できない。
fann_destroy_train
学習データのメモリを開放。当然だが学習の後に使うこと。
FANN_EXTERNAL void FANN_API fann_destroy_train(
struct fann_train_data * train_data
)
fann_destroy
ネットワーク用に確保していたメモリの開放。
FANN_EXTERNAL void FANN_API fann_destroy( struct fann * ann )