Help us understand the problem. What is going on with this article?

keras / Anacondaの罠: 環境変数 KERAS_BACKEND の悪行

More than 1 year has passed since last update.

Windows7 64bit 環境の Anaconda プロンプトから keras (CPUのみ)を使っていて、気のせいか、なんとなく処理速度が遅い気がしていた。
なお、バックエンドは tensorflow を入れて設定していた つもり でいた。

と、実行時の警告を見逃してた。。。
python kerasのサンプルプログラム.py

Using Theano backend.
WARNING (theano.configdefaults): g++ not available, if using conda:
conda install m2w64-toolchain
WARNING (theano.configdefaults): g++ not detected ! Theano will be unable to execute optimized C-implementations (for both CPU and G
PU) and will default to Python implementations. Performance will be severely degraded. To remove this warning, set Theano flags cxx
to an empty string.

なになに!? なんかがないので死ぬほど遅くなるって?
そんな話きいてなかったけど。。
つまり、バックエンドを Theano でやろうとして、それがないので、
しかたなく死ぬほど遅い Python 実装を使うってこと?

本家のページ:
https://keras.io/ja/backend/
によると、
$HOME/.keras/keras.json
これが、Windows だと、

type \Users\[ユーザー名]\.keras\keras.json
{
"floatx": "float32",
"epsilon": 1e-07,
"backend": "tensorflow",
"image_data_format": "channels_last"
}

ふむ、tensorflow を指定してて、問題なし。

え? なになに? 本家のページによると、
環境変数 KERAS_BACKENDも定義することができて,かつあなたの設定ファイルで定義されているものを上書きします

んで、どこに定義したらええねん?

https://qiita.com/TomokIshii/items/7de052565719add8e8ad
によると、
export KERAS_BACKEND=tensorflow
とのことだけど、これってLinux の話かな?

ええと、ウチの Python は Windows で Anaconda3 の環境を使ってるので、
type C:\ProgramData\Anaconda3\etc\conda\activate.d\keras_activate.bat
set "KERAS_BACKEND=theano"

こいつが犯人か! けしからん!!

こっちでも怒ってる人がいました。
http://ossyaritoori.hatenablog.com/?page=1496332747

しかし、keras_activate.bat が上書きできん!? けしからん!

というわけで、とりあえず、keras_activate.bat のとなりに、
keras_activate_local.bat
というファイルを無理矢理つくって、中身を
set "KERAS_BACKEND=tensorflow"

にしちゃえ! これで、Anaconda 起動時に無理矢理書き換え。( 他の方法もあるとは思うが・・)

これで、Anaconda3 を再起動して、

python kerasのサンプルプログラム.py
Using TensorFlow backend.
:

なるほど、・・・・10倍ぐらい速くなった気がする。。。。

ていうか、Anaconda プロンプトを使わなければいいのか。。
Anaconda はインストールには便利だけど、プロンプトは使う意味はあまりないのか。。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした