当前位置:   article > 正文

keras用cpu加速_在训练某些网络时,Keras(Tensorflow后端)在GPU上比在CPU上慢CPU

python keras采用cpu训练

我很难理解GPU和CPU速度与小尺寸网络(CPU有时更快)相似的原因,而GPU更快更大尺寸的网络。问题底部的代码在i7-6700k上以103.7s运行,但是当使用tensorflow-gpu时,代码运行时间为29.5秒。然而,当我训练一个拥有100个隐藏神经元的网络时,而不是像下面的例子那样使用1000,我使用GPU时约20秒,使用CPU约15秒。在训练某些网络时,Keras(Tensorflow后端)在GPU上比在CPU上慢CPU

我读过CPU-> GPU传输需要很长时间的另一个堆栈溢出答案,我假设这是参考在GPU上加载数据示例。

有人可以解释为什么会出现这种情况,并且可能引用了一些可以使速度最大化的代码更改?

import numpy as np

import tensorflow as tf

import keras

from keras.models import Sequential

from keras.utils import np_utils

from keras.layers.core import Dense, Activation, Flatten, Dropout

from sklearn.preprocessing import normalize

## Importing the MNIST dataset using Keras

from keras.datasets import mnist

(X_train, y_train), (X_test, y_test) = mnist.load_data()

# reshape for vector input

N, x, y = X_train.shape

X_train = normalize(np.reshape(X_train, (N, x * y)))

N, x, y = X_test.shape

X_test = normalize(np.reshape(X_test, (N, x * y)))

# one-hot encoding

y_train = np_utils.to_categorical(y_train)

y_test = np_utils.to_categorical(y_test)

model = Sequential()

model.add(Dense(output_dim=750, input_dim=784))

model.add(Activation('relu'))

model.add(Dropout(0.2))

model.add(Dense(150))

model.add(Activation('relu'))

model.add(Dropout(0.2))

model.add(Dense(50))

model.add(Activation('relu'))

model.add(Dropout(0.2))

model.add(Dense(50))

model.add(Activation('relu'))

model.add(Dropout(0.2))

model.add(Dense(10))

model.add(Activation('softmax'))

model.compile(loss='categorical_crossentropy', optimizer='Nadam', metrics=['accuracy'])

fit = model.fit(X_train, y_train, batch_size=128, nb_epoch=10, verbose=0)

## Printing the accuracy of our model, according to the loss function specified in model.compile above

score = model.evaluate(X_test, y_test, verbose=0)

print('Test score:', score[0])

print('Test accuracy:', score[1])

+1

您使用的是什么GPU?请注意,要完全饱和顶级GPU,需要数以万计的线程。假设每个线程处理一个神经元的计算,一个具有100个神经元的系统将没有充分利用GPU。相反,如果要将神经元数量增加到10K,那么GPU相对于CPU的相对优势可能会进一步增加。 –

+0

哎呀,完全忘记了在答案中包含这一点。我有一个GTX 1070.我明白了。这是有道理的 –

+0

我实际上注意到我的GTX 1070 GPU上的相同行为。我没有看到在CPU(i7-7700)和GPU上运行我的模型(与您使用的尺寸类似)。需要尝试增加网络评估差异的能力 –

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/644578
推荐阅读
相关标签
  

闽ICP备14008679号