Keras中的“无法解释优化器标识符”错误

2024-05-15 01:50:20 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图修改Keras中SGD优化器的learning rate参数时,出现了这个错误。我的代码中是否遗漏了某些内容,或者我的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'])*

下面是错误消息:

Traceback (most recent call last): File "C:\TensorFlow\Keras\ResNet-50\test_sgd.py", line 10, in model.compile(loss='mean_squared_error', optimizer=SGD(lr=0.01), metrics=['accuracy']) File "C:\Users\nsugiant\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\keras_impl\keras\models.py", line 787, in compile **kwargs) File "C:\Users\nsugiant\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\keras_impl\keras\engine\training.py", line 632, in compile self.optimizer = optimizers.get(optimizer) File "C:\Users\nsugiant\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\keras_impl\keras\optimizers.py", line 788, in get raise ValueError('Could not interpret optimizer identifier:', identifier) ValueError: ('Could not interpret optimizer identifier:', )


Tags: infrompyimportmodeltensorflowlineusers
3条回答

我最近也遇到过类似的问题。

原因是您正在使用tensorflow.python.keras api作为模型和层,使用keras.optimizers作为SGD。它们是tensorflow和纯keras的两个不同的keras版本。他们不能一起工作。你必须把所有的东西都改成一个版本。那就应该有用了。:)

希望这有帮助。

我来晚了,你的问题是你的代码中混合了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']
)

我在这个例子中使用了亚当。请按照上面的代码使用相关的优化器。

希望这有帮助。

这个问题主要是由于版本不同造成的。tensorflow.keras版本可能与keras不同。 从而导致了@Priyanka提到的错误。

对我来说,每当出现这个错误时,我都会以字符串的形式传入优化器的名称,然后由后端计算出来。 例如代替

tf.keras.optimizers.Adam

或者

keras.optimizers.Adam

我知道

model.compile(optimizer= 'adam' , loss= keras.losses.binary_crossentropy, metrics=['accuracy'])

相关问题 更多 >

    热门问题