【发布时间】:2015-08-28 05:50:47
【问题描述】:
我需要在 matlab 中训练一个模式识别网络。我有几个数据集将用于训练。我的脚本如下所示:
%%% train network with a couple of datasets
pathStr = 'Daten_Training';
files = dir(sprintf('%s/*.mat',pathStr));
for k = 1:length(files)
%%% load data for training
load(sprintf('%s/%s',pathStr, files(k).name));
%%% manually set targets to train the network with
Targets = setTargets(Data);
%%% create and train neural network
% Create a Pattern Recognition Network
hiddenLayerSize = 20;
net = patternnet(hiddenLayerSize);
% Train the network with our Data
net = trainNetwork(net,Data,Targets);
end
trainNetwork 函数如下所示:
function [ net ] = trainNetwork( net, Data, Targets )
% calculate features
[Features, TargetsBlock, blockIdx] = calcFeatures_Training(Data, Targets);
% split data for training
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;
% Train the network
[net, tr] = train(net, Features, TargetsBlock);
end
有没有一种方法可以多次训练并获得相同的结果,就好像我对连续的所有数据集使用一次训练一样? 目前看来,网络只是用新数据重新训练,之前的一切都丢失了。
【问题讨论】:
-
您可以将网络保存到 mat 文件:save('filename','VariableName(trained nnet object)') 并在将来加载:加载文件名
-
我明白我的错:我在每个循环中都初始化网络。这当然行不通。但是如果我只初始化一次,我可以训练多次吗?
-
是的,但是随着每次学习,网络的权重都会被修改。你应该总是训练一次;)当然,你可以训练多次,保存训练好的网络,最后选择最好的网络;)
标签: matlab neural-network