我正在训练一个简单的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)