googlecolab花了太多时间来训练分类器。怎么解决这个问题?

2024-06-17 13:04:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在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小时


Tags: 代码fromtestaddsize分类器trainingactivation
2条回答

尝试运行时,首先在本地复制文件

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

然后:

^{pr2}$

如果应对是一个缓慢的过程,上传一个压缩文件到你的驱动器,复制这个压缩文件到你的colab,然后解压缩。在

检查以确保你使用一个GPU,因为有时即使我把环境放到GPU它仍然不使用它。在

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

如果这是好的,那么我会重置你的运行时环境,然后再试一次。运行时间不应超过几分钟。我以前用了10000多张照片,每一个纪元都要花6分钟。我的图像比64,64大到224224224

我还发现使用Kaggle内核更快一些,并且不会遇到输入太大的问题。我不得不限制Colab的输入,因为它会耗尽内存。Kaggle没有这个问题,它在图像中的运行速度要快得多。我认为这是因为当你上传图片到你的数据集时,他们会对图片进行编码。他们必须从那里把它们转换成numpy数组,因为速度要快得多。在

相关问题 更多 >