はじめに
TensorFlow 1.4 あたりから Keras が含まれるようになりました。
個別にインストールする必要がなくなり、お手軽になりました。
…と言いたいところですが、現実はそう甘くありませんでした。
この記事は、TensorFlow 1.6 について書いています。
import の罠
TensorFlow を使うの場合、以下の 2 行を必ず書きます。
import numpy as np
import tensorflow as tf
このあと、TensorFlow 付属の Keras を使うなら、
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
(x_train, y_train), (x_test, y_test) = mnist.load_data()
model = Sequential()
model.add(Dense(...))
model.add(Dropout(...))
...
などと書きます。
tensorflow.keras.*
から、クラス・関数の単位で from X import Y1, Y2, ...
と列挙していきます。
しかし、クラス・関数が多くなると、from X import Y1, Y2, ...
が多くなりすぎて読みづらくなります。書くの方も面倒くさくなります。
当然、次のように書きたくなります。
import tensorflow.keras as keras
import tensorflow.keras.datasets as kdata
import tensorflow.keras.models as kmodel
import tensorflow.keras.layers as klayer
ですが、これらはすべて ModuleNotFoundError
になります。
intellisense を働かせてみると、tensorflow.keras.*
の実体は tensorflow.python.keras.*
にあるとわかります。
では、python.
を挟めばよいかというと、
import tensorflow.python.keras as keras
import tensorflow.python.keras.datasets as kdata
import tensorflow.python.keras.models as kmodel
import tensorflow.python.keras.layers as klayer
としても ModuleNotFoundError
になります。
結局、2 拓しかありません。
-
from tensorflow.keras.X import Y1, Y2, ...
として全部書く。 -
tf.keras.Xxx.Yyy(...)
のように毎回フルネームで書く。
不便ですね。
終わりに
素直に Keras をインストールした方がいいかもしれません。