Machine learning Pytorch显示错误:';非类型';对象没有属性';零';

Machine learning Pytorch显示错误:';非类型';对象没有属性';零';,machine-learning,neural-network,pytorch,Machine Learning,Neural Network,Pytorch,我正在使用Python3.8和VSCode 我试图创建一个没有激活和偏差的基本神经网络,但由于错误,我无法更新权重的梯度 矩阵详细信息: 层形状:(1,神经元数量) 权重层形状:(上一层神经元数量,下一层神经元数量) 这是我的密码: 样本神经网络 #导入库 进口火炬 将numpy作为np导入 手电筒。手动种子(0) #超参数 纪元=100 lr=0.01#学习率 #资料 X_列=火炬.张量([[1]],数据类型=火炬.浮子) y_列=火炬.张量([[2]],数据类型=火炬.浮子) ''' 网络架

我正在使用Python3.8和VSCode

我试图创建一个没有激活和偏差的基本神经网络,但由于错误,我无法更新权重的梯度

矩阵详细信息:

层形状:(1,神经元数量)

权重层形状:(上一层神经元数量,下一层神经元数量)

这是我的密码:

样本神经网络 #导入库 进口火炬 将numpy作为np导入 手电筒。手动种子(0) #超参数 纪元=100 lr=0.01#学习率 #资料 X_列=火炬.张量([[1]],数据类型=火炬.浮子) y_列=火炬.张量([[2]],数据类型=火炬.浮子) ''' 网络架构: 第一层有1个神经元 第二层有4个神经元 第三层有4个神经元 最后一层有1个神经元 *我没有添加偏见和激活。 ''' #初始化权重 权重=[] weights.append(torch.rand((1,4),需要_grad=True)) weights.append(torch.rand((4,4),需要_grad=True)) weights.append(torch.rand((4,1),需要_grad=True)) #计算y_pred y_pred=torch.matmul(torch.matmul)(torch.matmul(X_列车,重量[0]),重量[1]),重量[2]) #计算损失 损失=(y_pred-y_train)**2 #偏导数的计算 loss.backward() #更新权重并将渐变归零 使用手电筒。无梯度() 对于范围内的i(len(重量)): 权重[i]=权重[i]-权重[i]。梯度 权重[i].梯度0_uz() 它显示错误:

File "test3.py", line 43, in <module>
weights[i].grad.zero_()
AttributeError: 'NoneType' object has no attribute 'zero_'
文件“test3.py”,第43行,在
权重[i].梯度0_uz()
AttributeError:“非类型”对象没有属性“零”

我不明白为什么它会显示这个错误。有人能解释一下吗?

您的模型没有任何可用于计算年级的可培训参数。使用火炬的参数。有关创建具有可学习参数的模块的信息,请参见此

  torch.nn.parameter.Parameter
        A kind of Tensor that is to be considered a module parameter.

这是因为
weights[i]。grad
in
weights[i]=weights[i]-weights[i]。grad
属于
Nonetype