2,677 views
この記事は最終更新から 2058日 が経過しています。
(33) ニューラルネットでsin関数を近似 をちょっとだけ複雑な式に変えても近似できるか? を試してみる。
使うのは心電図の波形のようなこんな関数にする。
(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エポックではまだまだのようだが、なんとなく近似できているようだ。
アクセス数(直近5日): ※試験運用中、BOT除外簡易実装済2025-06-15: 0回 2025-06-14: 0回 2025-06-13: 1回 2025-06-12: 2回 2025-06-11: 2回