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

TensorFlow Keras从层配置重建时报错Keyword argument not understood: axis

错误原因

你的操作逻辑方向没问题,但写法存在错误:tf.keras.layers.Layer是所有Keras层的基类,仅包含通用属性,不识别具体层的专属参数。从你给出的层配置可以判断,索引132的层是BatchNormalization层,axis是BatchNormalization的专属初始化参数,基类无法识别,因此触发报错。

正确实现方案

单层层克隆+权重迁移

不用手动调用基类实例的from_config,直接用原层的类来加载配置即可,代码如下:

# 获取原层对象
original_layer = MCM_feature_extractor.get_layer(index=132)
# 用原层对应类的from_config方法加载配置,生成新层
cloned_layer = type(original_layer).from_config(original_layer.get_config())
# 迁移原层权重到新层
cloned_layer.set_weights(original_layer.get_weights())

批量复制多层+函数式API构建新模型

如果要复制多个层,直接循环处理即可,函数式API拼接示例:

# 假设你要复制索引120到140的层,输入shape和原模型输入一致
input_shape = MCM_feature_extractor.input_shape[1:]
inputs = tf.keras.Input(shape=input_shape)
x = inputs

for layer_idx in range(120, 141):
    # 逐层克隆+权重迁移
    original_layer = MCM_feature_extractor.get_layer(index=layer_idx)
    cloned_layer = type(original_layer).from_config(original_layer.get_config())
    cloned_layer.set_weights(original_layer.get_weights())
    # 函数式API拼接
    x = cloned_layer(x)

# 生成最终新模型
new_model = tf.keras.Model(inputs=inputs, outputs=x)
补充说明

如果需要单独用配置重构层,也可以用Keras自带的通用反序列化方法,会自动识别层类型:

config = MCM_feature_extractor.get_layer(index=132).get_config()
# 注意deserialize需要传入包含class_name和config的字典,get_config返回的是config部分,需要补充类名
cloned_layer = tf.keras.layers.deserialize({
    "class_name": original_layer.__class__.__name__,
    "config": config
})

内容的提问来源于stack exchange,提问作者Luciano Dourado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 07:27:00