Tensowflow1.11.0だけの問題みたいですが。
save()がエラーになって、h5ファイルに保存できない現象が発生します。
例えば、こんなチュートリアルみたいなコード
import tensorflow as tf mnist = tf.keras.datasets.mnist (x_train, y_train),(x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(), tf.keras.layers.Dense(512, activation=tf.nn.relu), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation=tf.nn.softmax) ]) model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.sparse_categorical_crossentropy, metrics=['accuracy']) model.fit(x_train, y_train, epochs=2) model.evaluate(x_test, y_test) model.save('my_model.h5')
MNISTで、ごくシンプルなモデルで学習し、学習済モデルを「my_model.h5」という名前で保存する だけの処理です。
これを、TensorFlowのバージョン1.10.0で実行すると問題なく終わります。
もちろん、以下のインストールができている前提ですけどね。
(TensorFlowをインストールしただけでは、はいってません)
pip install h5py pyyaml
1.11.0にバージョンがあがると
ところが、TeosorFlowを1.11.0にバージョンアップして実行すると。
raise NotImplementedError
NotImplementedError
という例外エラーが発生して、save()できません。
問題が発生しているのは以下の部分です。
model.save('my_model.h5')
これは、自分の環境だけの話ではなさそうです。
StackOverflowでも、報告されてました。
ここで以下のように書かれています。
code successfully in TF 1.10 but it failed in TF 1.11
つまり
コードをTF 1.10で正常に実行できましたが、TF 1.11で失敗しました
まったく、同じ現象ですね。
1.11.0にあげる時はご注意を
今、特にバージョンを指定しないで、「pip install --upgrade tensorflow」とやると、1.11.0がはいります。(2018/10/12時点)
なので、save()を使っているコードが、途端にエラーで実行できなくなることが起こりえます。
たぶん、すぐ修正されるとは思うんですが(1.12.0・・なのかな)、当面はきちんとバージョンを指定して以下のようにインストールした方が安全のようです。
pip install --upgrade tensorflow==1.10.0
やれやれ。
最初、わけがわからず・・2時間以上もはまってしまいました。