Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Google Colab花了太多时间来训练分类器。如何解决这个问题?_Python_Machine Learning_Keras_Deep Learning_Google Colaboratory - Fatal编程技术网

Python Google Colab花了太多时间来训练分类器。如何解决这个问题?

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

我想在GoogleColab中训练一个分类器,使用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()后,它显示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”