自分のデータセットのグレースケール画像のサイズが200x200
の私の分類問題にDeep Learningを適用したいと思います。現在、大規模なデータセット(15,000以上の画像)の非常に小さなサブセット(152画像)でDLをテストしています。 Pyano(Python 2.7.12 :: Anaconda 4.2.0(64-bit))でTheano(バージョン '0.9.0.dev4')バックエンドのKeras(バージョン1.1.2)ライブラリを使用しています。私のコードはCPUで動作しますが、非常に遅いです。そこで、私はGPUに切り替えました。しかし、私はエラーの下に取得しています:GPUでKerasを使用しているメモリが不足している
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.
私は提案ソリューション(optimizer=fast_compile
とoptimizer=None
)を試みたが、それがうまくいきませんでした。問題が画像サイズに関連していることはわかっています。なぜなら、画像を50x50
にサイズ変更したときに機能していたからです。
200x200
イメージに適用できるように問題を解決する方法を知っていますか? cuDNNを使用して私の問題への正しい解決策がある場合
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
私はわからないが、私はすでに.theanorc
でoptimizer_including=cudnn
を含むことにより、それを使用して試してみました:私はLinuxのMageia 5と私のGPU情報を使用しています
です;私は、エラーの下に取得しています:
AssertionError: cuDNN optimization was enabled, but Theano was not able to use it. We got this error:
Device not supported
私は私のGPUコンピューティングの互換性は、(cudnn GPUのCC要件(3.0以上)未満である)2.1であるので、それがかもしれないと思います。
大規模なデータセットで問題を修正してDLを実行してもらえると感謝します。
コードを見ることなく言うのは難しいですが、小さなバッチでイメージをGPUにロードできますか? – Atirag
cuDNNはあなたのGTS450 Fermi(GF106)GPUでは動作しません。 cuDNNにはケプラーGPUが必要です。あなたのGPUのメモリが不足しているようですが、GTS450はかなり古いメモリ(1GB)のないローエンドのGPUです。 –
@Atirag小さなバッチサイズを試しましたが、同様のエラーが発生しています。 – SaraG