Sergio_Tian 2022-06-15 07:18 采纳率: 100%
浏览 165
已结题

pytorch报错优化器参数为空列表

问题遇到的现象和发生背景

我按照书上教程用python中的pytorch框架写了一个神经网络代码,但是一直报错优化器参数为空列表,代码和书上的一模一样,不知道哪里出来问题,希望各位能帮帮忙,代码和报错如下:

import numpy as np
import matplotlib.pyplot as plt
import torch
import torch.nn as nn
# 数据准备
x = torch.unsqueeze(torch.linspace(-np.pi,np.pi,100),dim=1)
y = torch.sin(x) + 0.5 * torch.rand(x.size())

# 构建网络
class Net(nn.Module):
    def __int__(self):
        super(Net,self).__init__()
        self.predict = nn.Sequential(
            nn.Linear(1,10),
            nn.ReLU(),
            nn.Linear(10,1)
        )
    def forward(self,x):
        prediction = self.predict(x)
        return prediction

# 设置优化器和损失函数
net = Net()
optimizer = torch.optim.SGD(net.parameters(),lr=0.05)
loss_function = nn.MSELoss
plt.ion()
# 训练网络
for epoch in range(1000):
    out = net(x)
    loss = loss_function(out,y)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    if epoch % 25 == 0:
        plt.cla()
        plt.scatter(x,y)
        plt.plot(x,out.data.numpy,c="r",lw=5)
        plt.text(0.5,0,f"loss={loss}",fontdict={"size":20,"color":"red"})
        plt.pause(0.1)
    plt.show()
plt.ioff()
plt.show()

运行结果及报错内容

Traceback (most recent call last):
  File "E:\PythonLearning\nn_regression.py", line 36, in <module>
    optimizer = torch.optim.SGD(net.parameters(),lr=0.05)
  File "D:\ProgramData\Anaconda3\lib\site-packages\torch\optim\sgd.py", line 101, in __init__
    super(SGD, self).__init__(params, defaults)
  File "D:\ProgramData\Anaconda3\lib\site-packages\torch\optim\optimizer.py", line 49, in __init__
    raise ValueError("optimizer got an empty parameter list")
ValueError: optimizer got an empty parameter list

谢谢大家

展开全部

  • 写回答

1条回答 默认 最新

  • SmallAntJ 2022-06-16 10:29
    关注

    因为第11行把__init__写成了__int__,所以Net没有正确实例化。
    另外还有两处少了括号:
    第25行要写成

    loss_function = nn.MSELoss()
    

    第37行要写成

    plt.plot(x,out.data.numpy(),c="r",lw=5)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 6月23日
  • 已采纳回答 6月16日
  • 赞助了问题酬金10元 6月16日
  • 创建了问题 6月15日

悬赏问题

  • ¥15 STS/eclipse导入gradle项目时报错如下
  • ¥15 centos7.6进不去系统,卡在数字7界面
  • ¥15 Tensorflow采用interpreter.allocate_tensors()分配内存出现ValueError: vector too long报错
  • ¥15 使用CGenFF在线生成血红素辅基拓扑结构遇到问题
  • ¥15 在fragment使用okhttp同步上传文件,能不能在fragment销毁后还可以继续上传文件?
  • ¥20 matlab代码实现可达矩阵形成骨骼矩阵
  • ¥15 关于地板的木纹和图库中的匹配的
  • ¥30 机器学习预测疾病模型流程疑问
  • ¥50 2048Python实现
  • ¥15 使用ads进行低噪放仿真没有结果且不报错
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部