如果您只是调用save net,则工作区中的所有当前变量都将保存为net.mat。您只想保存经过训练的网络,因此您需要使用save('path_to_file', 'variable')。例如:
save('C:\Temp\trained_net.mat','net');
在这种情况下,网络将保存在给定的文件名下。
下次您想使用保存的预训练网络时,只需致电load('path_to_file')。如果您不重新初始化或再次训练此网络,则性能将与以前相同,因为所有权重和偏差值都将相同。
您可以通过检查net.IW{i,j}(输入权重)、net.LW{i,j}(层权重)和net.b{i}(偏差)等变量来查看使用的权重和偏差值。只要它们保持不变,网络的性能就会保持不变。
训练和保存
[x,t] = iris_dataset;
net = patternnet;
net = configure(net,x,t);
net = train(net,x,t);
save('C:\Temp\trained_net.mat','net');
y = net(x);
perf = perform(net,t,y);
display(['performance: ', num2str(perf)]);
在我的情况下它返回performance: 0.11748。每次新训练后值都会有所不同。
加载和使用
clear;
[x,t] = iris_dataset;
load('C:\Temp\trained_net.mat');
y = net(x);
perf = perform(net,t,y);
display(['performance: ', num2str(perf)]);
它返回performance: 0.11748。在同一数据集上使用网络时,这些值将相同。这里我们再次使用了训练集。
如果你得到一个全新的数据集,性能会有所不同,但对于这个特定的数据集,它总是一样的。
clear;
[x,t] = iris_dataset;
%simulate a new data set of size 50
data_set = [x; t];
data_set = data_set(:,randperm(size(data_set,2)));
x = data_set(1:4, 1:50);
t = data_set(5:7, 1:50);
load('C:\Temp\trained_net.mat');
y = net(x);
perf = perform(net,t,y);
display(['performance: ', num2str(perf)]);
在我的情况下它返回performance: 0.12666。