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

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

(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

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


*