我想使用Keras在google colab中训练分类器,以对图像代表狗还是猫进行分类。有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()后,它显示1个纪元还剩12小时
答案 0 :(得分:3)
检查以确保有时使用GPU,即使我将环境放到GPU上,它仍然没有使用。
#' ' means CPU whereas '/device:G:0' means GPU
import tensorflow as tf
tf.test.gpu_device_name()
如果这很好,那么我将重置您的运行时环境,然后重试。运行时间不会超过几分钟。我之前用10000张以上的照片来做,每个历时很快就花了6分钟。我的图片比64,64大得多,达到224,224
我还发现使用Kaggle内核要快一些,并且不会遇到输入太大的问题。我不得不限制Colab输入训练代,因为它将耗尽内存。 Kaggle不存在此问题,并且通过图像运行要快得多。我认为这是因为当您将图像上传到数据集时,它们会对图像进行编码。他们必须从那里将它们转换成numpy数组,因为这样做要快得多。
答案 1 :(得分:0)
首先在本地处理文件,以尝试运行
!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,然后解压缩。