Ich mag Deep Learning mein Klassifikationsproblem anzuwenden, wenn die Größe der Graustufen-Bilder in meinem Dataset 200x200
ist. Derzeit teste ich DL auf einer sehr kleinen Teilmenge (152 Bilder) meiner großen Datensätze (über 15.000 Bilder); und ich bin mit Keras (Version '1.1.2') Bibliothek mit Theano (Version '0.9.0.dev4') Backend in Python (Python 2.7.12 :: Anaconda 4.2.0 (64-Bit)). Mein Code läuft in der CPU, aber es ist sehr langsam. Also bin ich zu GPU gewechselt. Allerdings bin ich unten Fehler bekommen:Nicht genügend Speicher mit Keras auf GPU
Using Theano backend.
Using gpu device 0: GeForce GTS 450 (CNMeM is enabled with initial size: 70.0% of memory, cuDNN not available)
Train on 121 samples, validate on 31 samples
Epoch 1/200
Traceback (most recent call last):
File "<ipython-input-6-247bada3ec1a>", line 2, in <module>
verbose=1, validation_data=(X_test, Y_test))
File "/home/user1/anaconda2/envs/keras_env/lib/python2.7/site-packages/keras/models.py", line 652, in fit
sample_weight=sample_weight)
File "/home/user1/anaconda2/envs/keras_env/lib/python2.7/site-packages/keras/engine/training.py", line 1111, in fit
initial_epoch=initial_epoch)
File "/home/user1/anaconda2/envs/keras_env/lib/python2.7/site-packages/keras/engine/training.py", line 826, in _fit_loop
outs = f(ins_batch)
File "/home/user1/anaconda2/envs/keras_env/lib/python2.7/site-packages/keras/backend/theano_backend.py", line 811, in __call__
return self.function(*inputs)
File "/home/user1/anaconda2/envs/keras_env/lib/python2.7/site-packages/theano/compile/function_module.py", line 886, in __call__
storage_map=getattr(self.fn, 'storage_map', None))
File "/home/user1/anaconda2/envs/keras_env/lib/python2.7/site-packages/theano/gof/link.py", line 325, in raise_with_op
reraise(exc_type, exc_value, exc_trace)
File "/home/user1/anaconda2/envs/keras_env/lib/python2.7/site-packages/theano/compile/function_module.py", line 873, in __call__
self.fn() if output_subset is None else\
MemoryError: Error allocating 160579584 bytes of device memory (CNMEM_STATUS_OUT_OF_MEMORY).
Apply node that caused the error: GpuElemwise{Composite{(i0 * (i1 + Abs(i1)))},no_inplace}(CudaNdarrayConstant{[[[[ 0.5]]]]}, GpuElemwise{Add}[(0, 0)].0)
Toposort index: 60
Inputs types: [CudaNdarrayType(float32, (True, True, True, True)), CudaNdarrayType(float32, 4D)]
Inputs shapes: [(1, 1, 1, 1), (32, 32, 198, 198)]
Inputs strides: [(0, 0, 0, 0), (1254528, 39204, 198, 1)]
Inputs values: [CudaNdarray([[[[ 0.5]]]]), 'not shown']
Outputs clients: [[GpuContiguous(GpuElemwise{Composite{(i0 * (i1 + Abs(i1)))},no_inplace}.0)]]
HINT: Re-running with most Theano optimization disabled could give you a back-trace of when this node was created. This can be done with by setting the Theano flag 'optimizer=fast_compile'. If that does not work, Theano optimizations can be disabled with 'optimizer=None'.
HINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and storage map footprint of this apply node.
Ich versuchte, die vorgeschlagenen Lösungen (optimizer=fast_compile
und optimizer=None
), aber es hat nicht funktioniert. Ich weiß, dass das Problem mit den Bildgrößen zusammenhängt, weil es funktionierte, wenn ich die Bilder auf 50x50
änderte.
Wissen Sie, wie ich das Problem beheben kann in der Lage sein, es zu 200x200
Bilder anwenden?
Ich verwende Linux Mageia 5 und meine GPU Informationen:
02:00.0 VGA compatible controller: NVIDIA Corporation GF106 [GeForce GTS 450] (rev a1)
[ 64.299] (--) NVIDIA(0): Memory: 1048576 kBytes
[ 64.313] (II) NVIDIA: Using 12288.00 MB of virtual memory for indirect memory
[ 64.439] (==) NVIDIA(0): Disabling shared memory pixmaps
Ich bin nicht sicher, ob cuDNN mit einer richtigen Lösung für mein Problem ist, aber ich habe bereits versucht, es zu benutzen, indem optimizer_including=cudnn
in .theanorc
; aber ich bin unten Störung zu erhalten:
AssertionError: cuDNN optimization was enabled, but Theano was not able to use it. We got this error:
Device not supported
Ich denke, es könnte sein, weil meine GPU-Kompatibilität 2.1 ist (das ist weniger als die cudnn GPU cc Anforderung (3.0 oder höher)).
Ich wäre dankbar, wenn Sie mir helfen könnte, das Problem zu beheben und DL auf meine große Datensätze laufen?
Es ist schwierig, den Code zu sagen, ohne zu sehen, aber Sie die Bilder in kleineren Chargen an die gpu laden können? – Atirag
cuDNN funktioniert nicht mit Ihrer GTS450 Fermi (GF106) GPU. cuDNN benötigt kepler GPUs. Es scheint, dass Sie auf Ihrer GPU nicht mehr genügend Speicher haben, und die GTS450 ist eine ziemlich alte Low-End-GPU ohne viel Arbeitsspeicher (1 GB). –
@Airag Ich versuchte eine kleinere Batch-Größe, aber ich bekomme einen ähnlichen Fehler. – SaraG