Python Google Colab花了太多时间来训练分类器。如何解决这个问题?
我想在GoogleColab中训练一个分类器,使用Keras对图像表示狗还是猫进行分类。共有8000个培训样本和2000个测试样本。1个历元所用的时间为12小时。我是google colab的新手,我不知道如何解决这个问题。我使用GPU作为硬件加速,我认为使用1xTesla K80只需不到5分钟,但它占用的时间太长了 我曾尝试将运行时更改为GPU和TPU,但两种运行时都不起作用 这是我的密码:Python Google Colab花了太多时间来训练分类器。如何解决这个问题?,python,machine-learning,keras,deep-learning,google-colaboratory,Python,Machine Learning,Keras,Deep Learning,Google Colaboratory,我想在GoogleColab中训练一个分类器,使用Keras对图像表示狗还是猫进行分类。共有8000个培训样本和2000个测试样本。1个历元所用的时间为12小时。我是google colab的新手,我不知道如何解决这个问题。我使用GPU作为硬件加速,我认为使用1xTesla K80只需不到5分钟,但它占用的时间太长了 我曾尝试将运行时更改为GPU和TPU,但两种运行时都不起作用 这是我的密码: classifier = Sequential() classifier.add(Conv2D(32
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小时检查以确保您使用GPU,因为有时即使我将环境放入GPU,它仍然不使用它
#' ' means CPU whereas '/device:G:0' means GPU
import tensorflow as tf
tf.test.gpu_device_name()
如果这是好的,那么我将重置您的运行时环境并重试。运行时间不应超过几分钟。我之前拍了10000多张照片,每一个历元都很快地拍了6分钟。我的图像比64,64大得多,只有224224张
我还发现,使用Kaggle内核速度更快,并且不会遇到输入太大的问题。我不得不限制Colab对training gen的输入,因为它会耗尽内存。Kaggle没有这个问题,它在图像中的运行速度要快得多。我认为这是因为当你将图像上传到数据集时,它们会对图像进行编码。他们必须从那里把它们转换成numpy数组,因为它的速度要快得多 先在本地处理文件,然后尝试运行
!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')
如果处理过程很慢,请将压缩文件上载到驱动器,将此压缩文件复制到colab,然后将其解压缩。将数据集从驱动器复制到本地计算机会有帮助吗?(通常,驱动器的增量I/O速度非常慢,首先将数据集复制到本地磁盘会有所帮助。)我确实运行了该命令,以确保GPU仍在运行,所需时间相同。我还尝试在Kaggle内核中运行这段代码,所需时间不到15分钟。我不理解这一点,因为Kaggle和Colab都提供相同的GPU。此外,我的笔记本电脑中有Nvidia gtx 1050ti 4gb,这也需要超过20分钟的时间才能使用1个历元。特斯拉k80比1050ti优越得多,所以我想它需要不到5分钟的时间来完成一个时代。是的,你说得对。应该不会花那么长时间。我将继续努力,看看是否有什么奇怪的事情我可以复制你这么多!我将再次尝试运行代码。谢谢你的时间,我还发现如果你在你的电脑上运行太多的东西,那么Colabs会减速,甚至中途停止。我认为这种减速与训练生成器有关。一旦第一个历元通过,它会显著加快速度。在本地复制文件时出现此错误:cp:-r未指定;省略目录“/content/gdrive/My Drive/Colab Notebooks/dataset/training\u set”