2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[MATLAB]ニューラル ネットワーク回帰モデルの学習

Posted at

ニューラルネットワークを用いた回帰曲線の学習をMATLABで行いたい.
コマンドfitrnetの利用して行う.

全結合レイヤーと活性化関数reluによるネットワークの構成のサンプルは次の通りである.
ただし,入力データを1次元,出力データを1次元としている.

コマンドfitrnetの利用した場合はネットワークの構成は変更できない.
カスタムなネットワーク構成はオブジェクトdlnetworkを利用する.

sample_fitrnet_dim1.m
clc
close all
rng("default");

% 入力の次元
dim_in=1;
% 出力の次元
dim_out=1;
% 学習データの個数
num_train=640;
% 表示
Verbose=true;
% 学習中の損失グラフの表示ON/OFF
ProgressFigure=true;

%% 学習データの生成
x_train=4*rand(num_train,dim_in)-1;
y_train=func_dim1(x_train);
fig1=figure;
func_fig_data(fig1,x_train,y_train,'学習データ:y=f(x)');

%% 隠れ層の出力数
layer_sizes=[15 15 15];

%% 学習
model=fitrnet(x_train,y_train, ...
    "LayerSizes",layer_sizes, ...
    "Standardize",true,"Verbose",Verbose);

%% 学習途中のMSEの履歴
mse_train=loss(model,x_train,y_train);
if ProgressFigure
    fig2=figure;
    func_fig_semilogy(fig2,model.TrainingHistory.Iteration, ...
        model.TrainingHistory.TrainingLoss, ...
        '反復回数','損失MSE','学習中の損失MSEの履歴');
end

%% テストデータを予測で生成
x_test=(-1:0.01:3)';
y_pred=predict(model,x_test);
mse_test=loss(model,x_test,y_pred)
fig3=figure;
func_fig_data2(fig3,x_train,y_train,x_test,y_pred, ...
    '学習データと予測データの比較','学習データ','予測データ');

%% 真値との誤差
y_true=func_dim1(x_test);
error=sum((y_pred-y_true).^2)/num_train

%% =================== ローカル関数 ============================ %%

%% 学習データの生成用の関数
function y=func_dim1(x)
y=x.*(x-1).*(x-2);
end

function func_fig_data(fig,x,y,name)
figure(fig);
plot(x,y,'o');
grid on;
xlabel('x');
ylabel('y');
title(name);
drawnow;
end

function func_fig_data2(fig,x1,y1,x2,y2,name,l1,l2)
figure(fig);
plot(x1,y1,'o',x2,y2,'.');
grid on;
xlabel('x');
ylabel('y');
title(name);
legend(l1,l2);
drawnow;
end

function func_fig_semilogy(fig,x,y,lx,ly,name)
figure(fig);
semilogy(x,y);
grid on;
xlabel(lx);
ylabel(ly);
title(name);
drawnow;
end
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?