Во время обучения нейронной сети промежуточные результаты могут периодически сохраняться в 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 секундам для проблемы временного ряда, когда нейронную сеть обучают моделировать левитированный магнит.
[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]Вы можете возобновить обучение с последней контрольной точки, перезагрузив набор данных (при необходимости), а затем вызвав поезд с восстановленной сетью.
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);