Cha*_*sal 16 python deep-learning conv-neural-network keras tensorflow
我正在尝试加载在 Azure VM(NC 促销)上训练的 Keras 模型。但我收到以下错误。
类型错误:意外的关键字参数传递给优化器:learning_rate
编辑:
这是我用来加载模型的代码片段:
from keras.models import load_model
model = load_model('my_model_name.h5')
Run Code Online (Sandbox Code Playgroud)
小智 19
这也发生在我身上。很可能是因为learning_rate
2018 年 9 月从 2.2.* 版重命名为 2.3.0。(请参阅发行说明:https : //github.com/keras-team/keras/releases:将所有优化器的 lr 重命名为 learning_rate。)
这对我有用:
sudo pip install keras --upgrade
Run Code Online (Sandbox Code Playgroud)
Rob*_*eno 14
您是否使用了自定义优化器?
如果是这样,您可以像这样加载:
model = load_model('my_model_name.h5', custom_objects={
'Adam': lambda **kwargs: hvd.DistributedOptimizer(keras.optimizers.Adam(**kwargs))
})
Run Code Online (Sandbox Code Playgroud)
或者,您可以加载模型,model = load_model('my_model_name.h5', compile=False)
然后添加优化器并重新编译,但这会丢失您保存的权重。
小智 12
就我而言,我发现最好的解决方案是使用 h5py 将变量的名称从“learning_rate”->“lr”更改为之前帖子中的建议。
import h5py
data_p = f.attrs['training_config']
data_p = data_p.decode().replace("learning_rate","lr").encode()
f.attrs['training_config'] = data_p
f.close()
Run Code Online (Sandbox Code Playgroud)
该问题通常出现在训练该模型的内核与加载模型的依赖项版本之间的依赖项差异上。
如果您现在安装了最新版本的 Tensorflow (2.1),请尝试像这样加载模型:
import tensorflow as tf
print(tf.__version__)
print("Num GPUs Available: ",
len(tf.config.experimental.list_physical_devices('GPU')))
# Checking the version for incompatibilities and GPU list devices
# for a fast check on GPU drivers installation.
model_filepath = './your_model_path.h5'
model = tf.keras.models.load_model(
model_filepath,
custom_objects=None,
compile=False
)
Run Code Online (Sandbox Code Playgroud)
Compile=False
仅当模型已经编译时。
小智 7
我在两台不同的 PC 上工作时遇到了同样的错误。在 tensorflow 的某些版本中是 tf.keras.optimizers.SGD(lr = x) 而在其他版本中是 istf.keras.optimizers.SGD(learning rate = x)。
归档时间: |
|
查看次数: |
31949 次 |
最近记录: |