意外的关键字参数传递给了优化器:加载keras模型时的名称

时间:2019-07-09 07:13:10

标签: python tensorflow keras

我尝试从本地计算机上的Colab加载模型的检查点,但出现错误:

TypeError: Unexpected keyword argument passed to optimizer: name 

对于优化程序调用,它看起来像这样:

# Compile the model
model.compile(loss='categorical_crossentropy',
              optimizer=tf.keras.optimizers.Adam(lr=0.001, decay=1e-5),
              metrics=['accuracy'])

我使用的代码与我在Colab中使用的代码完全相同(在那里工作)

Keras版本-2.2.4

TensorFlow-1.13.1

如果我尝试加载model.h5,则会发生相同的问题 我也尝试在Rstudio中加载模型,但仍然收到相同的错误

更详细的错误消息:


  File "<ipython-input-1-d8e38e577b3d>", line 95, in <module>
    model = keras.models.load_model("C:/Users/diu/Documents/Python/Checkpoints/cp.ckpt")

  File "C:\Users\diu\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\engine\saving.py", line 249, in load_model
    optimizer_config, custom_objects=custom_objects)

  File "C:\Users\diu\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\optimizers.py", line 838, in deserialize
    printable_module_name='optimizer')

  File "C:\Users\diu\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\utils\generic_utils.py", line 194, in deserialize_keras_object
    return cls.from_config(cls_config)

  File "C:\Users\diu\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\optimizers.py", line 159, in from_config
    return cls(**config)

  File "C:\Users\diu\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\optimizers.py", line 471, in __init__
    super(Adam, self).__init__(**kwargs)

  File "C:\Users\diu\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\optimizers.py", line 68, in __init__
    'passed to optimizer: ' + str(k))

TypeError: Unexpected keyword argument passed to optimizer: name

2 个答案:

答案 0 :(得分:0)

问题出在语法上。

Colab可以:

<groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.1</version>

在Spyder中,我能够通过以下行加载模型权重:

model = keras.models.load_model("drive/My Drive/Models/my_model.h5")

P.S。上面的代码是在定义模型和优化器后执行的

答案 1 :(得分:0)

我认为,Colab使用tensorflow 2.x,并且在您的计算机中您拥有tensorflow1.x。因此存在不匹配。

您可以这样做

在您的本地计算机上,

import tensorflow.keras.models import load_model

model = load_model("my_model.h5", compile = False)

希望如此。