Не у всех людей есть установка для глубокого обучения или много кредитов в облачных сервисах, чтобы иметь аппаратное ускорение вычислений. 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-й эпохи и так далее.
Это помогает тренироваться с колабом, не беспокоясь о потере веса после тренировки.
Заключительные слова…
Надеюсь, эта статья сэкономит время. Хорошего дня.