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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3353閲覧

Kerasでh5ファイルをロードする時にエラーが起こってしまいます…

Yukkiy

総合スコア14

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/07/18 02:03

編集2022/07/18 02:39

前提・実現したいこと

初めて機械学習をGoogle colaboratryでkerasを用いて勉強していました。モデルを作るまでは出来たのですが、いざモデルを読み込もうとすると‪”‬No file or directory found at model.h5‪”‬というエラーが出てしまいました。しかしmodel.h5ファイルはipymbファイルと同じフォルダーに保存してあります。teratailやGoogle colaboratry共に使うのが初めてで分からないことだらけなのですがどなたか教えて下さると幸いです…

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

エラーメッセージ ``````OSError Traceback (most recent call last) <ipython-input-1-6210d8ecd14b> in <module>() 4 import keras 5 ----> 6 model = keras.models.load_model('model.h5', compile=False) 7 classes = pickle.load(open('classes.sav', 'rb')) 8 1 frames /usr/local/lib/python3.7/dist-packages/keras/saving/save.py in load_model(filepath, custom_objects, compile, options) 202 if isinstance(filepath_str, str): 203 if not tf.io.gfile.exists(filepath_str): --> 204 raise IOError(f'No file or directory found at {filepath_str}') 205 206 if tf.io.gfile.isdir(filepath_str): OSError: No file or directory found at model.h5

該当のソースコード

Python

1コード 2```import os 3import cv2 4import numpy as np 5import glob as glob 6import pickle 7from sklearn.model_selection import train_test_split 8from keras.utils import np_utils 9from keras.applications.vgg16 import VGG16 10from keras.models import Sequential 11from keras.models import model_from_json 12from keras.models import Model 13from keras.layers import Input, Activation, merge, Dense, Flatten,Dropout 14from tensorflow.keras.optimizers import Adam 15 16 17path = "/content/drive/MyDrive/perfume" 18folders = os.listdir(path) 19 20classes = [f for f in folders if os.path.isdir(os.path.join(path,f))] 21n_classes = len(classes) 22 23X = [] 24Y = [] 25 26for label,class_name in enumerate(classes): 27 files = glob.glob(path + "/" + class_name+ "/*.jpg") 28 for file in files: 29 img = cv2.imread(file) 30 img = cv2.resize(img,dsize=(224,224)) 31 X.append(img) 32 Y.append(label) 33 34X = np.array(X) 35X = X.astype("float32") 36X /= 255.0 37 38 39Y = np.array(Y) 40Y = np_utils.to_categorical(Y,n_classes) 41Y[:5] 42 43X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.2) 44print(X_train.shape) 45print(X_test.shape) 46print(Y_train.shape) 47print(Y_test.shape) 48 49input_tensor = Input(shape=(224,224,3)) 50 51base_model = VGG16(weights="imagenet",input_tensor=input_tensor,include_top=False) 52 53top_model = Sequential() 54top_model.add(Flatten(input_shape=base_model.output_shape[1:])) 55top_model.add(Dense(n_classes, activation="softmax")) 56 57model = Model(inputs=base_model.input,outputs=top_model(base_model.output)) 58 59for layer in model.layers[:15]: 60 layer.trainable = False 61 62print("# layers=",len(model.layers)) 63 64model.compile(loss="categorical_crossentropy",optimizer="adam",metrics=["accuracy"]) 65 66model.summary() 67 68model.fit(X_train,Y_train, epochs=100,batch_size=100) 69 70score = model.evaluate(X_test, Y_test, batch_size=100) 71 72pickle.dump(classes, open("classes.sav","wb")) 73 74model.save("model.h5")

Python

1コード 2```from keras.models import load_model 3import pickle 4import cv2 5import keras 6 7model = keras.models.load_model('model.h5', compile=False) 8classes = pickle.load(open('classes.sav', 'rb')) 9 10img = cv2.imread('sample/sample.jpg') 11img = cv2.resize(img,dsize=(224,224)) 12img = img.astype('float32') 13img /= 255.0 14img = img[None, ...] 15 16img = cv2.imread('sample/sample.jpg') 17cv2.imwrite('output/' + str(classes[pred])+ '/sample.jpg',img)

試したこと

モデルを作り直したりファイル名を変えたりしてみましたが出来ませんでした… 僕が初心者なこともありお手上げ状態です…

補足情報

ファイルは機械学習というファイルの下に機械学習.ipynbとclasses.sav、model.h5とoutput、sampleというファイルを置いています。
こちらのサイトを参考にしました。
https://sasuwo.org/image-classification/#toc3

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

model.h5ファイルはipymbファイルと同じファイルに保存してあります。

ここが誤りです。
「Colabのデフォルトのディレクトリ=Googleドライブ上のipymbファイルと同じディレクトリ」ではありません。

もし、Googleドライブ上に読み書きしたい場合は、Googleドライブをマウントして、そのマウント先を参照するようにパスを変更する必要があります。

投稿2022/07/18 02:29

fiveHundred

総合スコア9803

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yukkiy

2022/07/18 02:43 編集

Googleドライブはマウントしました… すみません、質問のところでミスがありました。「model.h5ファイルはipymbファイルと同じファイルに保存してあります。」の文の同じファイルという部分を同じフォルダーと打ち間違えていました。 ちなみにそれぞれのファイルは/content/drive/MyDrive/Colab Notebooks/機械学習/の下に全部入れてあります。
guest

0

ベストアンサー

以下のコードで現在の作業ディレクトリとファイルの存在確認ができます。
読み込むファイルのパスが正しいか?存在しているか?の確認をお願いします

python

1import os 2os.getcwd() 3os.path.isfile('model.h5')

追記
以下にするとTrueになる気がします。
機械学習フォルダにmodel.h5があると思っています

python

1import os 2os.path.isfile('/content/drive/MyDrive/Colab Notebooks/機械学習/model.h5')

追記2
model = keras.models.load_model('model.h5', compile=False)
を以下に変更するとできるのではないでしょうか?
model = keras.models.load_model('/content/drive/MyDrive/Colab Notebooks/機械学習/model.h5', compile=False)

投稿2022/07/18 02:25

編集2022/07/18 02:50
East_san

総合スコア407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yukkiy

2022/07/18 02:31

実行したらFalseと出てきました…
East_san

2022/07/18 02:45

回答更新しました。確認お願いします
Yukkiy

2022/07/18 02:47

Trueと出てきました!!
East_san

2022/07/18 02:50

さらに回答更新しました。確認お願いします
Yukkiy

2022/07/18 02:57

読み込めました! そして次にclasses.savも同じようにエラーが起きたのでパスを指定してあげたら読み込めました。 あそこにパスって指定できるんですね。初めて知りました!本当にありがとうございます! しかしまた違うところでエラーが起きてしました… 新たに質問を投稿しますのでもし良ければ答えてくださると嬉しいですがよろしいでしょうか…
East_san

2022/07/18 03:02

私で回答可能な範囲で回答させていただきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問