Не у всех людей есть установка для глубокого обучения или много кредитов в облачных сервисах, чтобы иметь аппаратное ускорение вычислений. Google Colabaratory - это сервис, который предоставляет время работы GPU Tesla K80 бесплатно, но обучение глубоких нейронных сетей с нуля может быть проблемой из-за ограничений. Итак, этот пост посвящен использованию Google Диска для вашего набора данных (в режиме загрузки только один раз) и сохранению контрольных точек для возобновления длительного обучения всякий раз, когда экземпляр отключается.

Зачем использовать Google Диск?

  • Google Colab обеспечивает максимальное время работы графического процессора 8–12 часов «в идеале» за раз, он может отключиться раньше этого срока, если они обнаружат неактивность или при большой нагрузке.
  • Он действует как постоянное хранилище для виртуальной машины Colab, так что вы не потеряете свои обученные данные.
  • Загрузите свой набор данных один раз и используйте его без проблем при повторном подключении к новой среде выполнения.

Монтирование Google Диска

Чтобы смонтировать диск, запустите эти 2 строки кода, которые запросят код авторизации и ссылку для получения этого кода авторизации, скопируйте и вставьте его, нажмите ввод, и вы подключили свой диск.

from google.colab import drive
drive.mount(‘/content/gdrive’)

Доступ к файлам с Google Диска

  • /content/gdrive/My Drive это должен быть родительский каталог для доступа к файлам на диске.
  • Например, если у вас есть папка Sample и файл с именем sample.csv,, то путь будет /content/gdrive/My Drive/Sample/sample.csv

Хранение и загрузка набора данных с диска

  • Всегда загружайте заархивированный файл, так как его легче распаковать и намного быстрее.
  • После подключения диска вы можете распаковать файл с именем sample.zip в папку Sample с помощью !unzip '/content/gdrive/My Drive/Sample/sample'
  • Распакованные файлы будут в каталоге /content/.
  • Итак, если в Zip-файле был файл с именем train.csv, после распаковки к нему можно получить доступ, используя путь '/content/train.csv'

Сохранение контрольных точек с помощью обратных вызовов в Keras

from keras.callbacks import *
filepath="/content/gdrive/My Drive/MyCNN/epochs:{epoch:03d}-val_acc:{val_acc:.3f}.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')
callbacks_list = [checkpoint]
  • путь к файлу: для папки с именем MyCNN на диске, и каждый файл будет храниться с номером эпохи и точностью проверки, эти файлы содержат веса вашего нейронного сеть.
  • ModelCheckpoint: для аргументов, переданных в приведенном выше коде, он отслеживает точность проверки и сохраняет, когда достигается более высокая точность проверки, чем последняя контрольная точка.
  • callbacks_list: сделал его списком, чтобы вы могли добавлять любые другие обратные вызовы в этот список и передавать его в функции fit / fit_generator, как выделено в приведенном ниже блоке кода во время обучения (все методы в списке будут вызывается после каждой эпохи).
model.fit_generator(datagen.flow(x_train, y_train, batch_size=64),
                    epochs=epochs,
                    verbose=1,
                    validation_data=(x_test, y_test),
                    callbacks=callbacks_list)

Для получения более подробной информации об обратных звонках, посетите контрольно-пропускной пункт Keras Docs.

Возобновление тренировки после отключения

  • Смонтируйте диск в новой среде выполнения
  • Используйте ту же архитектуру и создайте модель
  • model.load_weights('/content/gdrive/My Drive/MyCNN/epochs:047-val_acc:0.905.hdf5') загрузка весов с контрольной точки, где в 47-ю эпоху он достиг нового максимума в 90,5% точности проверки.
  • Затем скомпилируйте и подогнайте модель, продолжая с 48-й эпохи и так далее.

Это помогает тренироваться с колабом, не беспокоясь о потере веса после тренировки.

Заключительные слова…

Надеюсь, эта статья сэкономит время. Хорошего дня.