久々にTensorFlowを使おうとしたら動かなくて(最近Rでkerasをインストールするときに失敗したから…?),再インストールしようとしたら詰まったので対処法をメモ
対処法というのもおこがましいレベルで,要するに「最新版じゃなく,少し古いバージョンのTensorFlowを入れたら(よくわからんが)動くようになった」という感じです…(汗)
※環境
Windows 10(ver.1803) NVIDIA GeForce GTX 760 Python 3.6 Anaconda使ってます
今回の問題と対応
問題:GPUが認識されない
私は当初tensorflow-gpu 1.12.0(最新)とcuDNN 7.4(最新)とCUDA9.0で行っていたのですがGPUが認識されませんでした。
対応
いろいろといじっていたのですが,試しにtensorflow-gpuを1.10.0にダウングレードしてみたところ,GPUが認識されるようになりました。
※ダウングレードの方法
pip uninstall -y tensorflow-gpu pip install tensorflow-gpu==1.10.0
以下備忘録
TensorFlowの環境構築
TensorFlowのインストール方法
公式(https://www.tensorflow.org/install/)にいけば書いてあるんですが,あえて日本語で整理しておきます(自分用に…)
tensorflow
CPU onlyのTensorFlowをインストールする場合は単純で,
- Anacondaのインストール(これでpythonとpipが入る)
- Anaconda promptで
pip install tensorflow
を実行する
です
tensorflow-gpu
しかし,TensorFlow-GPUのインストールの場合はもうすこし面倒で,
- Anacondaのインストール(これでpythonとpipが入る)
- 今回はAnacondaで新しい仮想環境を"Create"した
- CUDA対応のグラボとドライバを用意する
- CUDAをインストールする
- cuDNNをインストールする
- Anaconda promptで
pip install tensorflow-gpu
を実行する
という手順になります。
気をつける点
tensorflow-gpuとcuDNNとCUDAのバージョンを対応させる必要があって,公式ページに対応表があります。
https://www.tensorflow.org/install/source_windows#gpu
ただ,今回はこの対応表通りにやっても動かないパターンでした…
GPUが認識されているかを確かめる方法
pythonエディタで実行できるなら以下のコードで。
# tensorflowがGPUも使えるかどうか from tensorflow.python.client import device_lib print(device_lib.list_local_devices())
Anaconda promptから確認したいなら
python -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
で。
GPUが認識されていない場合,device_type: "CPU"
だけしか返ってきません。
[name: "/device:CPU:0" device_type: "CPU" memory_limit: 268435456 locality { } incarnation: 1714209209365535369 ]
GPUが認識されていればdevice_type: "GPU"
の文字が返ってきます
[name: "/device:CPU:0" device_type: "CPU" memory_limit: 268435456 locality { } incarnation: 16550052200207927911 , name: "/device:GPU:0" device_type: "GPU" memory_limit: 1481696870 locality { bus_id: 1 links { } } incarnation: 10180044052055237741 physical_device_desc: "device: 0, name: GeForce GTX 760, pci bus id: 0000:01:00.0, compute capability: 3.0" ]