質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.48%

model.save()を使ってモデルを保存する方法について

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 137

score 1

前提・実現したいこと

エディターにVScode 言語にpython3.6.13を使って人工知能のモデルを作成しました。
モデルを学習をするところまでできたのですが、model.save()を使って保存したところうまく保存ができません。
解決法を教えてください。

発生している問題・エラーメッセージ

call()を呼び出したときのエラー
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-9-0b9011992b43> in <module>
----> 1 call()

<ipython-input-7-b496908ddcf6> in call()
      3     image = Image.open(name)
      4     image = image.resize((64,64))
----> 5     model = load_model("model.h5")
      6     np_image = np.array(image)
      7     np_image = np_image / 255

~\anaconda3\envs\karas-env\lib\site-packages\keras\engine\saving.py in load_wrapper(*args, **kwargs)
    490                 os.remove(tmp_filepath)
    491             return res
--> 492         return load_function(*args, **kwargs)
    493 
    494     return load_wrapper

~\anaconda3\envs\karas-env\lib\site-packages\keras\engine\saving.py in load_model(filepath, custom_objects, compile)
    582     if H5Dict.is_supported_type(filepath):
    583         with H5Dict(filepath, mode='r') as h5dict:
--> 584             model = _deserialize_model(h5dict, custom_objects, compile)
    585     elif hasattr(filepath, 'write') and callable(filepath.write):
    586         def load_function(h5file):

~\anaconda3\envs\karas-env\lib\site-packages\keras\engine\saving.py in _deserialize_model(h5dict, custom_objects, compile)
    271     if model_config is None:
    272         raise ValueError('No model found in config.')
--> 273     model_config = json.loads(model_config.decode('utf-8'))
    274     model = model_from_config(model_config, custom_objects=custom_objects)
    275     model_weights_group = h5dict['model_weights']

AttributeError: 'str' object has no attribute 'decode'

該当のソースコード

def main():
    model = Sequential()
    model.add(Conv2D(64,(3,3),input_shape=(64,64,3)))
    model.add(Activation("relu"))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(Conv2D(64,(3,3)))
    model.add(Activation("relu"))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(Flatten())
    model.add(Dense(256))
    model.add(Activation("relu"))
    model.add(Dense(2))
    model.add(Activation("softmax"))
    model.compile(optimizer="adam",loss="categorical_crossentropy",metrics=["accuracy"])
    train_datagen = ImageDataGenerator(rescale=1./255)
    test_datagen = ImageDataGenerator(rescale=1./255)
    train_generator = train_datagen.flow_from_directory("data/train",target_size=(64,64),batch_size=10)
    validation_generator = test_datagen.flow_from_directory("data/validation",target_size=(64,64),batch_size=10)
    model.fit_generator(train_generator,epochs=20,steps_per_epoch=10,validation_data=validation_generator,validation_steps=10)
    model.save("model.h5")
def call():    
    name = "data/validation/dog/images3.jpg"
    image = Image.open(name)
    image = image.resize((64,64))
    model = load_model("model.h5")
    np_image = np.array(image)
    np_image = np_image / 255
    np_image = np_image[np.newaxis, :, :, :]
    result = model.predict(np_image)
    if result[0][0] > result[0][1]:
        print("犬")
    else:
        print("猫")

試したこと

model.h5が文字化けしていたのでJISやUTF-16に変更してみましたが改善されませんでした。

補足情報(FW/ツールのバージョンなど)

Windows10
Python3.6.13
Keras2.3.1
VSCode Jupyternotebook

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • toast-uz

    2021/05/08 17:01

    Keras動きません、のテンプレ回答
    ・生kerasはサポートされていませんのでアンインストールしてtensorflow2系だけを使ってください。
    ・特に生kerasとtensorflowを両方インストールすると、バグります。
    ・import kerasの類は全てimport tf.kerasに置き換えてください。

    キャンセル

  • toast-uz

    2021/05/08 17:21

    Anaconda利用者へのテンプレ回答
    ・condaではなくpipを使ってインストールしてませんか?

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る