Python实例化SET_MLP报缺少dimensions、activations必填位置参数错误
问题根因
- 类实例化参数缺失:
SET_MLP的构造方法__init__定义中,dimensions、activations是无默认值的必填位置参数,执行a = SET_MLP()时未传入这两个参数,直接触发TypeError。 - 方法调用逻辑错误:
_update_w_b()是类内部用于反向传播阶段更新权重、偏置的方法,需要传入index(层序号)、dw(权重梯度)、delta(层误差项)三个入参,本身不具备返回权重值的功能,不是用来读取权重的接口。
修复步骤
- 按类定义要求传入必填参数完成实例化,参考你注释中的网络结构示例,代码如下:
import numpy as np # 需提前定义/导入依赖的Relu、Sigmoid激活函数,以及createSparseWeights稀疏权重生成方法 # 对应你注释中3312维输入、3层3000神经元隐层、5维输出的网络结构 dimensions = (3312, 3000, 3000, 3000, 5) activations = (Relu, Relu, Relu, Sigmoid) model = SET_MLP(dimensions=dimensions, activations=activations)
- 直接读取实例属性即可获取存储的权重、偏置值,无需调用更新方法:
# 获取所有层的权重字典(key为层序号,value为对应层的稀疏权重矩阵) all_weights = model.w # 获取指定层权重,例如第1层(输入层到第一隐层的权重) w_layer1 = model.w[1] # 获取所有层的偏置字典 all_biases = model.b
注意:
_update_w_b()仅在训练反向传播过程中使用,调用时必须传齐三个入参,方法无返回值,执行后会直接修改实例内部存储的权重、偏置值。
内容的提问来源于stack exchange,提问作者Heno
相关产品推荐
相关产品推荐

