Google Colab тратит слишком много времени на обучение классификатора.Как это исправить? - PullRequest
4 голосов
/ 08 июля 2019

Я хочу обучить классификатора в Google Colab, используя Keras, чтобы классифицировать, представляет ли изображение собаку или кошку.Есть 8000 учебных образцов и 2000 тестовых образцов.Время, необходимое для 1 эпохи, составляет 12 часов.Я новичок в Google Colab, и я не знаю, как это исправить.Я использую GPU в качестве аппаратного ускорения, и я подумал, что 1xTesla K80 займет менее 5 минут, но это занимает слишком много времени.

Я попытался изменить время выполнения на GPU и TPU, но обавремя выполнения не работает.

Вот мой код:

classifier = Sequential()

classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 
 'relu'))

classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Conv2D(32, (3, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Flatten())

classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dense(units = 1, activation = 'sigmoid'))

classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', 
metrics = ['accuracy'])

from keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale = 1./255,
                               shear_range = 0.2,
                               zoom_range = 0.2,
                               horizontal_flip = True)

test_datagen = ImageDataGenerator(rescale = 1./255)

training_set = train_datagen.flow_from_directory('/content/gdrive/My 
Drive/Colab Notebooks/dataset/training_set',
target_size = (64, 64),
batch_size = 32,
class_mode = 'binary')

test_set = test_datagen.flow_from_directory('/content/gdrive/My 
Drive/Colab Notebooks/dataset/test_set',
 target_size = (64, 64),                                          
batch_size = 32,
class_mode = 'binary')

classifier.fit_generator(training_set,
                     steps_per_epoch = 8000,
                     epochs = 1,
                     validation_data = test_set,
                     validation_steps = 2000)

При выполнении этого кода много устаревших.После выполнения classifier.fit_generator () он показывает 12 часов, оставшихся на 1 эпоху

Ответы [ 2 ]

3 голосов
/ 08 июля 2019

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

#' ' means CPU whereas '/device:G:0' means GPU
import tensorflow as tf
tf.test.gpu_device_name()

Если это хорошо, тогда я сбросил бы вашу среду выполнения иПопробуйте снова.Запуск не должен занимать более нескольких минут.Я сделал это с более чем 10000 фотографиями раньше, и это прошло быстро ~ 6 минут для каждой эпохи.Мои изображения были намного больше - 224 224 по сравнению с 64,64

Я также обнаружил, что использование ядер Kaggle немного быстрее и не приводит к слишком большим входным размерам.Мне пришлось ограничить ввод Colab для тренировочного поколения, так как он исчерпал бы память.Kaggle не имеет этой проблемы, и он намного быстрее проходит через изображения.Я думаю, это потому, что они кодируют изображения, когда вы загружаете их в свой набор данных.Они должны конвертировать их в массивы с нуля, поскольку это происходит намного быстрее.

0 голосов
/ 08 июля 2019

попробуйте запустить сначала локальное копирование файлов

!cp '/content/gdrive/My Drive/Colab Notebooks/dataset/training_set' 'training_set'

и затем:

training_set = train_datagen.flow_from_directory('training_set',
target_size = (64, 64),
batch_size = 32,
class_mode = 'binary')

test_set = test_datagen.flow_from_directory('test_set',
 target_size = (64, 64),                                          
batch_size = 32,
class_mode = 'binary')

Если копирование медленное, загрузите на свой диск заархивированный файл, скопируйте этот zip-файл в ваш colab, а затем распакуйте его.

...