我试图通过在循环中添加子图来在Matlab中创建一个大图。
% Generation of examples and targets
x = 0 : 0.05 : 3 * pi;
y = sin(x.^2);
% Deep Learning Toolbox™ software arranges concurrent vectors with a
% matrix, and sequential vectors with a cell array (where the second index is the time step).
% con2seq and seq2con allow concurrent vectors to be converted to sequential vectors, and back again.
p = con2seq(x);
t = con2seq(y); % convert the data to a useful format
% Creation of networks (based on algorlm1.m)
num_hid = 50;
% Epoch quantities to evaluate
num_epochs = [1 20 1000]
% We'll evaluate these algorithms
training_algorithms = {
'traingd',
'traingda',
'traincgf',
'traincgp',
'trainlm',
'trainbfg'
};
%% Initialization
% Create arrays to store networks and training parameters
networks = cell(length(training_algorithms), 1);
durations = zeros(length(training_algorithms), 1);
slopes = cell(length(training_algorithms), 1);
intercepts = cell(length(training_algorithms), 1);
correlations = cell(length(training_algorithms), 1);
for tai = 1:length(training_algorithms)
% Create new feedforwardnet
net = feedforwardnet(num_hid, training_algorithms{tai});
% Set all networks weights and biases equal (to the first one created)
if tai > 1
net.IW{1,1} = networks{tai-1}.IW{1,1};
net.LW{1,1} = networks{tai-1}.LW{1,1};
net.b{1} = networks{tai-1}.b{1};
net.b{2} = networks{tai-1}.b{2};
end
% Store network
networks{tai} = net;
end
figure;
for tai = 1:6
net = networks{tai}; % Load network
net.trainParam.showWindow = false; % Don't show graph
% Train network, and time training
tic;
net = train(net, p, t);
durations(tai)=toc;
% Simulate input on trained networks (and convert to double format)
y_result = cell2mat(sim(net, p));
% Evaluate result
[slopes{tai}, intercepts{tai}, correlations{tai}] = postreg(y_result, y);
% Add network to array
networks{tai} = net;
% Plot results
subplot(2,6,tai);
plot(x,y,'bx',x,y_result,'r'); % Plot the sine function and the output of the network
%title('1 epoch');
legend('target',training_algorithms{tai},'Location','north');
subplot(2,6, tai+6);
postregm(y_result, y); % perform a linear regression analysis and plot the result
end
我只能得到在上一次迭代中创建的图(当tai == 6时)。我尝试在循环前面添加“保持”,然后再次将其关闭。任何想法为什么会这样?
编辑:这是结果图:
EDIT2:我添加了代码,以便可以复制它。您将需要深度学习工具箱。