"BOKU"のITな日常

62歳・文系システムエンジニアの”BOKU”は日々勉強を楽しんでます

Tesorflow1.11.0のtf.kerasでmodel.save()をすると、NotImplementedError例外が発生してエラーになる

Tensowflow1.11.0だけの問題みたいですが。

f:id:arakan_no_boku:20181012005050j:plain

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で実行すると問題なく終わります。

f:id:arakan_no_boku:20181012003401j:plain

もちろん、以下のインストールができている前提ですけどね。

(TensorFlowをインストールしただけでは、はいってません)

pip install h5py pyyaml

 

1.11.0にバージョンがあがると

 

ところが、TeosorFlowを1.11.0にバージョンアップして実行すると。

raise NotImplementedError
NotImplementedError

という例外エラーが発生して、save()できません。

f:id:arakan_no_boku:20181012004128j:plain

問題が発生しているのは以下の部分です。

model.save('my_model.h5')

これは、自分の環境だけの話ではなさそうです。

StackOverflowでも、報告されてました。

github.com

ここで以下のように書かれています。

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時間以上もはまってしまいました。