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上運行我的模型(與您使用的尺寸類似)。需要嘗試增加網絡評估差異的能力 –
總結
以上是生活随笔為你收集整理的keras用cpu加速_在训练某些网络时,Keras(Tensorflow后端)在GPU上比在CPU上慢CPU的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 年底离职有年终吗 辞职之前就要做好打算
- 下一篇: 宇宙星座信用卡的优势