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

PyTorch实现稀疏神经网络调用nn.SparseLinear报AttributeError如何解决

问题解决方法

错误原因

torch.nn模块没有内置SparseLinear类,该报错是API引用错误导致。

可落地的修复方案

根据你的使用场景二选一即可:

  • 场景1:实现稀疏连接的全连接层(固定比例权重为0,仅剩余权重参与运算更新)
    先自定义SparseLinear层,再替换原有代码的nn.SparseLinear即可,自定义层代码如下:
import torch
import torch.nn as nn
import torch.nn.functional as F

class SparseLinear(nn.Module):
    def __init__(self, in_features, out_features, sparsity=0.9, bias=True):
        super().__init__()
        self.in_features = in_features
        self.out_features = out_features
        self.sparsity = sparsity
        self.weight = nn.Parameter(torch.Tensor(out_features, in_features))
        self.bias = nn.Parameter(torch.Tensor(out_features)) if bias else None
        # 权重初始化
        nn.init.kaiming_uniform_(self.weight, a=torch.math.sqrt(5))
        if self.bias is not None:
            fan_in, _ = nn.init._calculate_fan_in_and_fan_out(self.weight)
            bound = 1 / torch.math.sqrt(fan_in) if fan_in > 0 else 0
            nn.init.uniform_(self.bias, -bound, bound)
        # 生成稀疏掩码,sparsity参数为权重置0的比例
        self.register_buffer('mask', torch.bernoulli(torch.full_like(self.weight, 1 - sparsity)))
    
    def forward(self, x):
        sparse_weight = self.weight * self.mask
        return F.linear(x, sparse_weight, self.bias)

替换后你的模型定义部分代码如下:

class FeedforwardNeuralNetModel(nn.Module):
    def __init__(self, input_dim, hidden_dim, output_dim, sparsity=0.9):
        super().__init__()
        self.fc1 = SparseLinear(input_dim, hidden_dim, sparsity=sparsity)
        self.sigmoid = nn.Sigmoid()
        self.fc2 = SparseLinear(hidden_dim, output_dim, sparsity=sparsity)

    def forward(self, x):
        out = self.fc1(x)
        out = self.sigmoid(out)
        out = self.fc2(out)
        return out
  • 场景2:需要接收COO格式稀疏张量作为层输入
    PyTorch 1.12及以上版本的原生nn.Linear已经支持稀疏张量输入,直接将代码中所有nn.SparseLinear替换为nn.Linear即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 00:15:03