PYtorch调用保存的模型报错

AttributeError: Can’t get attribute ‘Net’ on <module ‘main’>

看网上 没有 正确直接的回复
源代码

在这里插入图片描述
然后 我调用 时
在这里插入图片描述
就报了上面的错
然后 我修改 源代码为
在这里插入图片描述

原因分析:就是 python 有个__main__ 函数 在最后 表示 当前文件为主程序时 才执行 把它删掉 保存模型 就可以了 但我 仍然奇怪的是 这句话 和 为什么 会导致这个报错 感觉模型是保存了整个模型代码 不单是 网络部分

在这里插入图片描述
又报错了
上面说的 不对

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyTorch中,可以通过调用`backward()`方法来计算对loss的输入求导,即计算模型参数的梯度。这个方法会自动计算计算图中所有需要求导的节点的梯度,并将梯度保存在相应的张量的`.grad`属性中。 以下是一个简单的示例,假设我们有一个包含两个线性层的神经网络,输入为`x`,输出为`y`,然后我们想要计算对模型参数的梯度。 ```python import torch import torch.nn as nn # 定义神经网络模型 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(2, 3) self.fc2 = nn.Linear(3, 1) def forward(self, x): x = torch.relu(self.fc1(x)) x = self.fc2(x) return x # 创建神经网络模型 net = Net() # 随机生成输入x和标签y x = torch.randn(1, 2) y = torch.randn(1, 1) # 计算模型输出 y_pred = net(x) # 计算loss loss = nn.functional.mse_loss(y_pred, y) # 计算对模型参数的梯度 loss.backward() # 输出模型参数的梯度 print(net.fc1.weight.grad) print(net.fc1.bias.grad) print(net.fc2.weight.grad) print(net.fc2.bias.grad) ``` 这里我们首先定义了一个包含两个线性层的神经网络模型,并创建了一个实例`net`。然后我们随机生成一个输入`x`和对应的标签`y`。接着进行前向传播,计算模型输出`y_pred`,并计算对应的均方误差loss。最后调用`loss.backward()`方法,计算对模型参数的梯度。模型参数的梯度会保存在相应的张量的`.grad`属性中。 需要注意的是,调用`backward()`方法前需要确保计算图中所有需要求导的节点都已经被计算过,否则会。此外,如果需要多次计算梯度,需要在每次计算前先将梯度清零,可以通过调用`zero_grad()`方法实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值