Автоматическая сохранение контрольных точек во время обучения нейронной сети

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