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

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