前提・実現したいこと
ここに質問の内容を詳しく書いてください。
犬、猫の分類をしようとしている最中に、エラーが発生しました。
とあるサイトのサンプルコードをそのまま使っていたのでどこに誤りがあるのかいまいちよくわからず・・
助けていただけると助かります。
よろしくお願いします。
発生している問題・エラーメッセージ
ImportError Traceback (most recent call last) <ipython-input-7-4a947a034d6c> in <module>() 2 from keras.layers import Conv2D, MaxPooling2D 3 from keras.layers import Activation, Dropout, Flatten, Dense ----> 4 from keras.optimizers import RMSprop 5 from keras.utils import np_utils 6 import keras ImportError: cannot import name 'RMSprop' from 'keras.optimizers' (/usr/local/lib/python3.7/dist-packages/keras/optimizers.py) --------------------------------------------------------------------------- NOTE: If your import is failing due to a missing package, you can manually install dependencies using either !pip or !apt. To view examples of installing some common dependencies, click the "Open Examples" button below.
該当のソースコード
from keras.models import Sequential from keras.layers import Conv2D, MaxPooling2D from keras.layers import Activation, Dropout, Flatten, Dense from keras.optimizers import RMSprop from keras.utils import np_utils import keras import numpy as np classes = ["dog", "cat"] num_classes = len(classes) image_size = 64 """ データを読み込む関数 """ def load_data(): X_train, X_test, y_train, y_test = np.load("./dog_cat.npy", allow_pickle=True) # 入力データの各画素値を0-1の範囲で正規化(学習コストを下げるため) X_train = X_train.astype("float") / 255 X_test = X_test.astype("float") / 255 # to_categorical()にてラベルをone hot vector化 y_train = np_utils.to_categorical(y_train, num_classes) y_test = np_utils.to_categorical(y_test, num_classes) return X_train, y_train, X_test, y_test """ モデルを学習する関数 """ def train(X, y, X_test, y_test): model = Sequential() # Xは(1200, 64, 64, 3) # X.shape[1:]とすることで、(64, 64, 3)となり、入力にすることが可能です。 model.add(Conv2D(32,(3,3), padding='same',input_shape=X.shape[1:])) model.add(Activation('relu')) model.add(Conv2D(32,(3,3))) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Dropout(0.1)) model.add(Conv2D(64,(3,3), padding='same')) model.add(Activation('relu')) model.add(Conv2D(64,(3,3))) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(512)) model.add(Activation('relu')) model.add(Dropout(0.45)) model.add(Dense(2)) model.add(Activation('softmax')) # https://keras.io/ja/optimizers/ # 今回は、最適化アルゴリズムにRMSpropを利用 opt = RMSprop(lr=0.00005, decay=1e-6) # https://keras.io/ja/models/sequential/ model.compile(loss='categorical_crossentropy',optimizer=opt,metrics=['accuracy']) model.fit(X, y, batch_size=28, epochs=40) # HDF5ファイルにKerasのモデルを保存 model.save('./cnn.h5') return model """ メイン関数 データの読み込みとモデルの学習を行います。 """ def main(): # データの読み込み X_train, y_train, X_test, y_test = load_data() # モデルの学習 model = train(X_train, y_train, X_test, y_test) main()
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
> とあるサイトのサンプルコードをそのまま使っていたので
どこのサイトですか?kerasのバージョンはそのサイトと同じですか?
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.optimizers import RMSprop
from keras.utils import np_utils
import keras
↓ 変更
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D
from tensorflow.keras.layers import Activation, Dropout, Flatten, Dense
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras.utils import to_categorical
from tensorflow import keras
y_train = np_utils.to_categorical(y_train, num_classes)
y_test = np_utils.to_categorical(y_test, num_classes)
↓ 変更
y_train = to_categorical(y_train, num_classes)
y_test = to_categorical(y_test, num_classes)
で、どうでしょうか?
参考
https://dev.infohub.cc/use-tensorflow-keras/#TensorFlowKeras-2
https://teratail.com/questions/277434
meg_さん、AI Academyというサイトのコードです!
jbpb0さん、ご丁寧にありがとうございます。
なんとか無事、解決できました!
回答2件
あなたの回答
tips
プレビュー