如何完全利用GPU来减少Keras CNN模型的训练时间

时间:2018-04-14 13:24:25

标签: python tensorflow keras

我正在训练一个简单的Keras dog-cat图像分类器,使用Tensorflow(GPU版本)作为后端。

GPU利用率未超过40%。如何提高GPU利用率以缩短培训时间?

当我们使用CPU进行培训时,总共将使用近99%的CPU。但是为什么GPU利用率不会超过40%而且培训时间会减少?

这是我的分类器代码。使用Nvidia Geforce 940M GPU,每个时代在我的系统中耗时25分钟:

from keras.models import Sequential
from keras.layers import Convolution2D,MaxPooling2D,Dense

from keras.layers import Flatten

#initialising the CNN
classifier = Sequential()

#step1 = convolution
classifier.add(Convolution2D(filters=32,
                 kernel_size=(3,3),
                 input_shape=(64,64,3),
                 activation='relu'))
classifier.add(MaxPooling2D(pool_size=(2,2)))
classifier.add(Flatten())
classifier.add(Dense(128,activation='relu'))
classifier.add(Dense(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('dataset/training_set',
                         target_size=(64,64),
                         batch_size=32,
                         class_mode='binary') 

test_set = test_datagen.flow_from_directory('dataset/test_set',
                        target_size=(64, 64),
                        batch_size=32,
                        class_mode='binary')

classifier.fit_generator(training_set,
             steps_per_epoch=8000,
             epochs=25,
             validation_data=test_set,
             validation_steps=2000)

0 个答案:

没有答案