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

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

ただいまの
回答率

90.00%

kerasでのモデルの保存方法がわからない

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 47

<環境>
Linux
Ubuntu 18.04.3 LTS (Bionic Beaver)
Anaconda 64bit 
python3.7
tensorflow 1.13-gpu

anacondaで作った環境下でkerasを用いて機械学習を勉強しています。参考サイト←このサイトを参考にして、学習したモデルの保存と読み込みを学んでいます。

↓自分で作成したコード

from tensorflow.python.keras.datasets import cifar10
from tensorflow.python.keras.callbacks import ModelCheckpoint

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

print('x_train.shape:', x_train.shape)
print('x_test.shape:', x_test.shape)
print('y_train.shape:', y_train.shape)
print('y_test.shape:', y_test.shape)

x_train = x_train/255
x_test = x_test/255

from tensorflow.python.keras.utils import to_categorical

y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

from tensorflow.python.keras.models import Sequential
model = Sequential()

from tensorflow.python.keras.layers import Conv2D

model.add(
    Conv2D(
        filters=32,
        input_shape=(32,32,3),
        kernel_size=(3,3),
        strides=(1,1),
        padding='same',
        activation='relu'
    )
)

model.add(
    Conv2D(
        filters=32,
        kernel_size=(3,3),
        strides=(1,1),
        padding='same',
        activation='relu'
    )
)

from tensorflow.python.keras.layers import MaxPooling2D
model.add(MaxPooling2D(pool_size=(2,2)))

from tensorflow.python.keras.layers import Dropout
model.add(Dropout(0.25))

model.add(
    Conv2D(
        filters=64,
        kernel_size=(3,3),
        strides=(1,1),
        padding='same',
        activation='relu'
    )
)

model.add(
    Conv2D(
        filters=64,
        kernel_size=(3,3),
        strides=(1,1),
        padding='same',
        activation='relu'
    )
)

model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))

model.output_shape

from tensorflow.python.keras.layers import Flatten
model.add(Flatten())
model.output_shape

from tensorflow.python.keras.layers import Dense
model.add(Dense(units=512, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(units=10, activation='softmax'))

from tensorflow.python.keras.callbacks import TensorBoard

model.compile(
    optimizer='adam',
    loss='categorical_crossentropy',
    metrics=['accuracy']
)

check_point = ModelCheckpoint( filepath="./model/model.{epoch:02d}-{val_loss:.4f}.hdf5",
                       monitor="val_loss",
                       save_best_only=True,
                       mode="auto" )

tsb = TensorBoard(log_dir='./aaa')
history_model = model.fit(
    x_train,
    y_train,
    batch_size=32,
    epochs=20,
    validation_split=0.2,
    callbacks=[tsb,check_point]
)


とりあえず、ModelCheckpointを用いてval_lossが最小になるときのパラメーターを保存しようと思い実行したところ以下のエラー文が出ました。

'h5f.pyx' を開くことができません: ファイル (Error: ファイルが見つかりません (/home/spi/ドキュメント/h5py/h5f.pyx)) を読み取ることができません。

ModelCheckpointでファイル名を指定するときの「.hdf5」を「.h5」にしても同じエラーが起こります。
そもそも.hdf5ファイルを作りたいのになぜ開こうとしているのでしょうか。

やってみたこと

h5py,hdf5 のアップデート


どなたか回答お願いします

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

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

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