フィードバックループがあるモデルでは、時刻 における出力値を計算するために 時刻 の時の値を必要とします。 ニューロンを記述する構造体の定義を以下のように変更しておきます。
typedef struct { double output; double thres; double state; double old_state; double inp_wgt; double self_wgt; } neuron;
update_neuron(neuron *a, double input)
の定義を変更すれば
完成です。
void update_neuron(neuron *a, double input) { a->state += (- a->output + a->inp_wgt * input + a->old_state * a->self_wgt - a->thres) * STEP; a->output = output_f(a->state); a->old_state = a->output; }
(14) |
(15) |