简体   繁体   中英

How can I train a neural (pattern recognition) network multiple times in matlab?

I need to train a pattern recognition network in matlab. I have several datasets which shall be used for training. My script looks like this:

%%% 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

The trainNetwork function looks like this:

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

Is there a way to train multiple times with the same result as if I would use one training with all datasets in a row? For now it looks like the network is just retrained with the new data and everything before is lost.

Do not now it is actual or not, but maybe help for someone.

You can train a network only one times. If you train again, it is going to be a new network. :) The weights going to be different. If you give the same name, MATLAB going to overwrite every time you run the script.

The best way - i think - to do this is :

  1. Train your network with your own inputs,layers,and options.
  2. Save your network into a file with the following function : save('myFilename.mat','myNetname');
  3. Load your net from the file : load('myFilename.mat');
  4. Change the inputs - maybe you have multiple datasets.
  5. Update weights on your net , and comment the train option (%)! Do not train the network again. You can update with the following function : myNetname = predictAndUpdateState(myNetname,someInput);

Hope this helps for somebody:)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM