2017-07-07 111 views
0

已經很長時間了,我嘗試瞭解一個問題。請幫幫我。Keras(theano)錯誤,同時gpu

我試圖從標準示例git lib(there)運行'Keras'示例。

如果我使用CPU,那麼一切都會正常工作;但是,如果我嘗試使用GPU加速,它將會崩潰,不會夾住任何錯誤:

# build the model: a single LSTM 
print('Build model...') 
print(' 1') 
model = Sequential() 
print(' 2') 
model.add(LSTM(128, input_shape=(maxlen, len(chars)))) 
print(' 3') 
model.add(Dense(len(chars))) 
print(' 4') 
model.add(Activation('softmax')) 

print(' 5') 
optimizer = RMSprop(lr=0.01) 

print(' Compilling') 
model.compile(loss='categorical_crossentropy', optimizer=optimizer) 

我把一些print()爲更好地理解錯誤的地方。 而我得到:

runfile('C:/Users/kostya/Desktop/temp/python/test.py', wdir='C:/Users/kostya/Desktop/temp/python/') 
Using Theano backend. 
Using cuDNN version 5110 on context None 
Preallocating 1638/2048 Mb (0.800000) on cuda 
Mapped name None to device cuda: GeForce GTX 650 (0000:01:00.0) 
WARNING: Preallocating too much memory can prevent cudnn and cublas from working properly 
DEVICE: cuda 
corpus length: 206433 
total chars: 79 
nb sequences: 68798 
Vectorization... 
Build model... 
    1 
    2 


Ядро остановилось, перезапуск *(It means: The Core has stopped, restarting)* 

我將採取類似的錯誤,如果我運行它througth standatr蟒蛇控制檯。 (python.exe緊急停止)

我使用:贏10-64,Python的3.6.1,阿納康達與活化的單獨的環境,CUDA 8.0,5.1 cuRNN,MKL 2017.0.3,numpy的1.13.0,theano 0.9 .0,conda-forge.keras 2.0.2,m2w64-openblas 0.2.19,conda-forge.pygpu 0.6.8,VC 14.0等。

這是我的.theanorc.txt配置文件。 (我敢肯定,這能抓住他如果我把device = cpu - 它工作正常(但慢慢地))

[global] 
floatX = float32 
device = cuda 
optimizer_including = cudnn 

[nvcc] 
flags=-LC:\Users\kostya\Anaconda3\envs\keras\libs 
compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin 

[cuda] 
root = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0 

[dnn] 
library_path = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64 
include_path = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include 

[gpuarray] 
preallocate = 0.8 

回答

1

您嘗試使用與CUDA後端gpuarray後端選項(preallocate)。來自Theano doc

僅當使用(GpuArray Backend)時,此值纔會分配GPU內存。對於舊的後端,請參閱config.lib.cnmem

嘗試在你的Theano配置

[gpuarray] 
preallocate = 0.8 

[lib] 
cnmem = 0.8 
+0

謝謝您更換,但它不工作。 在這種情況下,它甚至沒有分配0.8的內存。 我使用支持GpuArray後端的CUDA 8.0和Theano 0.9.0。 –