LoginSignup
8
11

More than 5 years have passed since last update.

TensorFlowに付属のKerasを使う

Posted at

はじめに

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 をインストールした方がいいかもしれません。

8
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
11