You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Keras LSTM中设置kernel与recurrent_kernel为不可训练?

单独控制LSTM层kernel/recurrent_kernel的可训练性

你遇到的AttributeError是因为lstm_layer.cell.kernel返回的是计算图中的Tensor对象,而非可修改的权重Variable,所以无法直接设置其trainable属性。要单独控制LSTM层的kernel、recurrent_kernel和bias的可训练性,需要直接操作层的权重Variable对象,具体实现如下:

解决方案代码

# 获取迁移学习模型中的目标LSTM层
lstm_layer = modelTL.layers[0]

# 遍历层的所有权重变量,设置指定权重为不可训练
for weight in lstm_layer.weights:
    weight_name = weight.name.lower()
    # 匹配kernel和recurrent_kernel权重,将其设为不可训练
    if "kernel" in weight_name or "recurrent_kernel" in weight_name:
        weight._trainable = False

# 重新编译模型,确保可训练变量列表更新
modelTL.compile(optimizer='adam', loss='your_loss_function')

关键说明

  • LSTM层的权重变量会以明确的名称标识,比如kernel、recurrent_kernel、bias,通过判断权重名称可以精准定位目标组件
  • 修改权重的_trainable属性后,必须重新编译模型,这样Keras才会更新可训练变量的集合
  • 这种方式不会影响bias的可训练性,满足你只冻结kernel和recurrent_kernel的需求

内容的提问来源于stack exchange,提问作者Binata Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 07:48:20