Во время обучения нейронной сети промежуточные результаты могут периодически сохраняться в файл MAT для восстановления, если компьютер выходит из строя или вы убиваете процесс обучения. Это помогает защитить значение длительных запусков, которые в случае прерывания должны быть полностью перезапущены в противном случае. Эта функция особенно полезна для длительных параллельных сеансов обучения, которые с большей вероятностью будут прерваны вычислением отказов в ресурсах.
Сохранение контрольных точек включено с помощью необязательного 'CheckpointFile'
обучающий аргумент, за которым следует имя файла контрольной точки или путь. Если вы задаете только имя файла, файл по умолчанию помещается в рабочую директорию. Файл должен иметь .mat
расширение файла, но если это не указано, оно автоматически добавляется. В этом примере сохранение контрольных точек выполняется в файле с именем MyCheckpoint.mat
в текущей рабочей директории.
[x,t] = bodyfat_dataset; net = feedforwardnet(10); net2 = train(net,x,t,'CheckpointFile','MyCheckpoint.mat');
22-Mar-2013 04:49:05 First Checkpoint #1: /WorkingDir/MyCheckpoint.mat 22-Mar-2013 04:49:06 Final Checkpoint #2: /WorkingDir/MyCheckpoint.mat
По умолчанию сохранение контрольных точек происходит не чаще одного раза в 60 секунд. В предыдущем кратком примере обучения это приводит только к двум сохранениям контрольной точки: одна в начале и одна в конце обучения.
Необязательный аргумент обучения 'CheckpointDelay'
может изменить частоту сохранений. Например, здесь минимальная задержка контрольной точки устанавливается равной 10 секундам для задачи timeseries, где нейронная сеть обучена моделировать левитированный магнит.
[x,t] = maglev_dataset; net = narxnet(1:2,1:2,10); [X,Xi,Ai,T] = preparets(net,x,{},t); net2 = train(net,X,T,Xi,Ai,'CheckpointFile','MyCheckpoint.mat','CheckpointDelay',10);
22-Mar-2013 04:59:28 First Checkpoint #1: /WorkingDir/MyCheckpoint.mat 22-Mar-2013 04:59:38 Write Checkpoint #2: /WorkingDir/MyCheckpoint.mat 22-Mar-2013 04:59:48 Write Checkpoint #3: /WorkingDir/MyCheckpoint.mat 22-Mar-2013 04:59:58 Write Checkpoint #4: /WorkingDir/MyCheckpoint.mat 22-Mar-2013 05:00:08 Write Checkpoint #5: /WorkingDir/MyCheckpoint.mat 22-Mar-2013 05:00:09 Final Checkpoint #6: /WorkingDir/MyCheckpoint.mat
После отказа компьютера или прерывания обучения можно перезагрузить структуру контрольной точки, содержащую лучшую нейронную сеть, полученную до прерывания, и обучающую запись. В этом случае stage
значение поля 'Final'
, что указывает на последнее сохранение в последнюю эпоху, поскольку обучение успешно завершено. Первая эпохальная контрольная точка обозначена 'First'
, и промежуточные контрольные точки по 'Write'
.
load('MyCheckpoint.mat')
checkpoint = file: '/WorkdingDir/MyCheckpoint.mat' time: [2013 3 22 5 0 9.0712] number: 6 stage: 'Final' net: [1x1 network] tr: [1x1 struct]
Возобновить обучение с последней контрольной точки можно путем перезагрузки набора данных (при необходимости), затем вызова train с восстановленной сетью.
net = checkpoint.net; [x,t] = maglev_dataset; load('MyCheckpoint.mat'); [X,Xi,Ai,T] = preparets(net,x,{},t); net2 = train(net,X,T,Xi,Ai,'CheckpointFile','MyCheckpoint.mat','CheckpointDelay',10);