KerasでSGDオプティマイザーの学習率パラメーターを変更しようとすると、このエラーが発生しました。コード内の何かを見逃したか、Kerasが正しくインストールされていませんか?
ここに私のコードがあります:
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense, Flatten, GlobalAveragePooling2D, Activation
import keras
from keras.optimizers import SGD
model = Sequential()
model.add(Dense(64, kernel_initializer='uniform', input_shape=(10,)))
model.add(Activation('softmax'))
model.compile(loss='mean_squared_error', optimizer=SGD(lr=0.01), metrics= ['accuracy'])*
エラーメッセージは次のとおりです。
トレースバック(最後の最後の呼び出し):ファイル「C:\ TensorFlow\Keras\ResNet-50\test_sgd.py」、model.compile(loss = 'mean_squared_error'、optimizer = SGD(lr = 0.01)の10行目、メトリック= ['accuracy'])ファイル "C:\ Users\nsugiant\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\keras_impl\keras\models.py"、行787、コンパイル** kwargs)ファイル「C:\ Users\nsugiant\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\keras_impl\keras\engine\training.py」、632行目.optimizer = optimizers.get(optimizer)File "C:\ Users\nsugiant\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\keras_impl\keras\optimizers.py"、行788、 in get raise ValueError( 'オプティマイザ識別子を解釈できませんでした:'、identifier)ValueError:( 'オプティマイザ識別子を解釈できませんでした:'、)
私は最近、同様の問題に直面しました。
その理由は、モデルとレイヤーにtensorflow.python.keras apiを使用し、SGDにkeras.optimizersを使用しているためです。これらは、テンソルフローと純粋なケラの2つの異なるケラバージョンです。彼らは一緒に働くことができませんでした。すべてを1つのバージョンに変更する必要があります。その後、動作するはずです。 :)
お役に立てれば。
私はここで少し遅れています、あなたの問題はあなたのコードでTensorflow kerasとkeras APIを見逃しているということです。オプティマイザーとモデルは同じレイヤー定義から取得する必要があります。以下のようにすべてにKeras APIを使用します。
from keras.models import Sequential
from keras.layers import Dense, Dropout, LSTM, BatchNormalization
from keras.callbacks import TensorBoard
from keras.callbacks import ModelCheckpoint
from keras.optimizers import adam
# Set Model
model = Sequential()
model.add(LSTM(128, input_shape=(train_x.shape[1:]), return_sequences=True))
model.add(Dropout(0.2))
model.add(BatchNormalization())
# Set Optimizer
opt = adam(lr=0.001, decay=1e-6)
# Compile model
model.compile(
loss='sparse_categorical_crossentropy',
optimizer=opt,
metrics=['accuracy']
)
この例ではadamを使用しました。上記のコードに従って、関連するオプティマイザーを使用してください。
お役に立てれば。
この問題は主に異なるバージョンが原因で発生します。 tensorflow.kerasバージョンは、kerasと同じでない場合があります。したがって、@ Priyankaで述べたエラーが発生します。
私にとって、このエラーが発生するたびに、オプティマイザーの名前を文字列として渡し、バックエンドがそれを把握します。たとえば
tf.keras.optimizers.Adam
または
keras.optimizers.Adam
私がやります
model.compile(optimizer= 'adam' , loss= keras.losses.binary_crossentropy, metrics=['accuracy'])
Kerasドキュメンテーションのサンプルの実行 https://keras.io/examples/cifar10_cnn/ および最新のkerasおよびテンソルフローバージョンのインストール
(この執筆時点で、テンソルフロー2.0.0a0およびKerasバージョン2.2.4)
例で使用しているケラ、具体的には例の上の行を明示的にオプティマイザーにインポートする必要がありました。
opt = tensorflow.keras.optimizers.rmsprop(lr=0.0001, decay=1e-6)
に置き換えられました
from tensorflow.keras.optimizers import RMSprop
opt = RMSprop(lr=0.0001, decay=1e-6)
最近のバージョンでは、多くの場合、APIが「壊れた」およびkeras.stuffがtensorflow.keras.stuffになりました。
インポート行を変更してみてください
from keras.models import Sequential
from keras.layers import Dense, ...
あなたの輸入品は私には少し奇妙に思えます。たぶん、あなたはそれについてさらに詳しく説明することができます。
与えるだけ
optimizer = 'sgd' / 'RMSprop'