keras用cpu加速_在训练某些网络时,Keras(Tensorflow后端)在GPU上比在CPU上慢CPU
我很難理解GPU和CPU速度與小尺寸網(wǎng)絡(luò)(CPU有時(shí)更快)相似的原因,而GPU更快更大尺寸的網(wǎng)絡(luò)。問題底部的代碼在i7-6700k上以103.7s運(yùn)行,但是當(dāng)使用tensorflow-gpu時(shí),代碼運(yùn)行時(shí)間為29.5秒。然而,當(dāng)我訓(xùn)練一個(gè)擁有100個(gè)隱藏神經(jīng)元的網(wǎng)絡(luò)時(shí),而不是像下面的例子那樣使用1000,我使用GPU時(shí)約20秒,使用CPU約15秒。在訓(xùn)練某些網(wǎng)絡(luò)時(shí),Keras(Tensorflow后端)在GPU上比在CPU上慢CPU
我讀過CPU-> GPU傳輸需要很長時(shí)間的另一個(gè)堆棧溢出答案,我假設(shè)這是參考在GPU上加載數(shù)據(jù)示例。
有人可以解釋為什么會出現(xiàn)這種情況,并且可能引用了一些可以使速度最大化的代碼更改?
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,需要數(shù)以萬計(jì)的線程。假設(shè)每個(gè)線程處理一個(gè)神經(jīng)元的計(jì)算,一個(gè)具有100個(gè)神經(jīng)元的系統(tǒng)將沒有充分利用GPU。相反,如果要將神經(jīng)元數(shù)量增加到10K,那么GPU相對于CPU的相對優(yōu)勢可能會進(jìn)一步增加。 –
+0
哎呀,完全忘記了在答案中包含這一點(diǎn)。我有一個(gè)GTX 1070.我明白了。這是有道理的 –
+0
我實(shí)際上注意到我的GTX 1070 GPU上的相同行為。我沒有看到在CPU(i7-7700)和GPU上運(yùn)行我的模型(與您使用的尺寸類似)。需要嘗試增加網(wǎng)絡(luò)評估差異的能力 –
總結(jié)
以上是生活随笔為你收集整理的keras用cpu加速_在训练某些网络时,Keras(Tensorflow后端)在GPU上比在CPU上慢CPU的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 年底离职有年终吗 辞职之前就要做好打算
- 下一篇: dedecmsmip_织梦MIP文章内容