(35) ニューラルネットでちょっと複雑な関数を近似

投稿者: | 2014/09/20

2,677 views

この記事は最終更新から 2058日 が経過しています。

(33) ニューラルネットでsin関数を近似 をちょっとだけ複雑な式に変えても近似できるか? を試してみる。

使うのは心電図の波形のようなこんな関数にする。
20140920_04

nnet_sin_4

(1) 学習データを作成

data_IN  = [-5 : 0.1 : 5];
data_OUT = sin(data_IN) + cos(power(data_IN,2)) + tan(data_IN);

(2) 4層ニューラルネットワークを作成

S = [16 32 1];
R = [min(data_IN), max(data_IN)]
NNet = newff( R, S );
NNet.trainParam.epochs = 3000;

(3) 学習を実行

VV.P = data_IN;
VV.T = data_OUT;
NNet = train( NNet, data_IN, data_OUT, [], [], VV );
data_RES = sim( NNet, data_IN );
plot( data_IN, data_RES, 'b','LineWidth',2', ...
      data_IN, data_OUT, 'r','LineWidth',2' );

(4) 未学習のデータで検証

test_IN  = rand(1,100) * 10 - 5;
test_OUT = sim( NNet, test_IN );
plot(data_IN, data_OUT, 'r', 'LineWidth',2',...
     test_IN, test_OUT, 'b+','LineWidth',2' );

3,000エポックではまだまだのようだが、なんとなく近似できているようだ。
20140920_05


アクセス数(直近5日): ※試験運用中、BOT除外簡易実装済
  • 2025-06-15: 0回
  • 2025-06-14: 0回
  • 2025-06-13: 1回
  • 2025-06-12: 2回
  • 2025-06-11: 2回
  • コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です