keras用cpu加速_在训练某些网络时,Keras(Tensorflow后端)在GPU上比在CPU上慢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上运行我的模型(与您使用的尺寸类似)。需要尝试增加网络评估差异的能力 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值