binary_crossentropy 使ってるのに、target 値が 0/1 ではない

binary_crossentropy を loss function にして、出力層を sigmoid にしているにも関わらず、肝心の target (y_train) が 0/1 ではなく、0/0.9999... みたいな値になっていた。当然誤差が常に発生することになる。

acc が一生上がらなくて???と思っていたらこれが原因だった。

  1. トップ
  2. tech
  3. 機械学習ハマったところ (一生 acc 上がらない)

nvidia driver のインストールまわりで Ubuntu が起動しなくなったり操作不能になったりする。OS 再インストールを何度かしなおす必要があった。機械学習専用のマシンに Ubuntu だけインストールするのがおすすめ。

Ubuntu は最新版ではなく LTS を入れること。事例が少なくて面倒なことになる。

とりあえずサードパーティドライバをインストールしてみる

sudo apt update
sudo ubuntu-drivers autoinstall
sudo reboot

これで nvidia-smi はできるが古いのが入ってしまった。

ppa から nvidia-driver-* でグラボにあった最新のドライバをいれる。

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-430

ドライバが入ったら、tensorflow-gpu などを入れるが、各ツールキットのバージョンがうまく一致していなければ動かない。

自分でやろうとせず、余計なことをしないで Anaconda を使うのが正解。Anaconda が nvidia の外部ツールキットも含めて必要なものをすべて入れてくれる。

# これですべてが入る
conda install tensorflow-gpu
$ python
>> import tensorflow as tf
>> tf.test.gpu_device_name()

なおドライバが古いと CUDA driver version is insufficient for CUDA runtime version と怒られる。

  1. トップ
  2. tech
  3. Ubuntu 18.04 LTS に Tensorflow GPU