我想在googlecolab中训练一个分类器,使用Keras对图像代表的是狗还是猫进行分类。培训样本8000个,测试样本2000个。1个历元所用的时间是12小时。我是谷歌colab的新手,不知道怎么解决这个问题。我使用GPU作为硬件加速,我认为拥有1xtelak80将不到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)
执行此代码时有许多不推荐使用的代码。执行后分类器.fit_发生器(),显示1个历元剩余12小时
尝试运行时,首先在本地复制文件
然后:
^{pr2}$如果应对是一个缓慢的过程,上传一个压缩文件到你的驱动器,复制这个压缩文件到你的colab,然后解压缩。在
检查以确保你使用一个GPU,因为有时即使我把环境放到GPU它仍然不使用它。在
如果这是好的,那么我会重置你的运行时环境,然后再试一次。运行时间不应超过几分钟。我以前用了10000多张照片,每一个纪元都要花6分钟。我的图像比64,64大到224224224
我还发现使用Kaggle内核更快一些,并且不会遇到输入太大的问题。我不得不限制Colab的输入,因为它会耗尽内存。Kaggle没有这个问题,它在图像中的运行速度要快得多。我认为这是因为当你上传图片到你的数据集时,他们会对图片进行编码。他们必须从那里把它们转换成numpy数组,因为速度要快得多。在
相关问题 更多 >
编程相关推荐