当前位置: 首页> 文旅> 文化 > seo搜索引擎优化师_软件项目管理是什么_seo点击器_朋友圈推广平台

seo搜索引擎优化师_软件项目管理是什么_seo点击器_朋友圈推广平台

时间:2025/7/12 9:20:08来源:https://blog.csdn.net/gs1we1/article/details/144105372 浏览次数:0次
seo搜索引擎优化师_软件项目管理是什么_seo点击器_朋友圈推广平台

1. 网络结构定义

class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.linear1 = nn.Linear(2, 2)self.linear2 = nn.Linear(2, 2)# 网络参数初始化self.linear1.weight.data = torch.tensor([[0.15, 0.20], [0.25, 0.30]])self.linear2.weight.data = torch.tensor([[0.40, 0.45], [0.50, 0.55]])self.linear1.bias.data = torch.tensor([0.35, 0.35])self.linear2.bias.data = torch.tensor([0.60, 0.60])def forward(self, x):x = self.linear1(x)x = torch.sigmoid(x)x = self.linear2(x)x = torch.sigmoid(x)return x
解释
  • Net:继承自 nn.Module,定义了一个简单的全连接神经网络。
  • __init__ 方法:初始化网络层。
    • self.linear1 = nn.Linear(2, 2):第一个全连接层,输入维度为 2,输出维度为 2。
    • self.linear2 = nn.Linear(2, 2):第二个全连接层,输入维度为 2,输出维度为 2。
  • 参数初始化
    • self.linear1.weight.data:第一层的权重初始化为 [[0.15, 0.20], [0.25, 0.30]]
    • self.linear2.weight.data:第二层的权重初始化为 [[0.40, 0.45], [0.50, 0.55]]
    • self.linear1.bias.data:第一层的偏置初始化为 [0.35, 0.35]
    • self.linear2.bias.data:第二层的偏置初始化为 [0.60, 0.60]
  • forward 方法:定义前向传播过程。
    • x = self.linear1(x):第一层线性变换。
    • x = torch.sigmoid(x):应用 Sigmoid 激活函数。
    • x = self.linear2(x):第二层线性变换。
    • x = torch.sigmoid(x):再次应用 Sigmoid 激活函数。
    • 返回最终的输出 x

2. 主程序

if __name__ == "__main__":inputs = torch.tensor([[0.05, 0.10]])target = torch.tensor([[0.01, 0.99]])# 获得网络输出值net = Net()output = net(inputs)# 计算误差loss = torch.sum((output - target) ** 2) / 2# 优化方法optimizer = optim.SGD(net.parameters(), lr=0.5)# 梯度清零optimizer.zero_grad()# 反向传播loss.backward()# 打印(w1-w8)观察w5、w7、w1 的梯度值是否与手动计算一致print(net.linear1.weight.grad.data)print(net.linear2.weight.grad.data)# 更新梯度optimizer.step()# 打印更新后的网络参数print(net.state_dict())
解释
  1. 定义输入和目标

    inputs = torch.tensor([[0.05, 0.10]])
    target = torch.tensor([[0.01, 0.99]])
    
    • inputs:输入数据,形状为 (1, 2)
    • target:目标数据,形状为 (1, 2)
  2. 获得网络输出值

    net = Net()
    output = net(inputs)
    
    • 创建 Net 类的实例 net
    • 使用 netinputs 进行前向传播,得到输出 output
  3. 计算误差

    loss = torch.sum((output - target) ** 2) / 2
    
    • 计算均方误差损失(MSE Loss),公式为:
      [
      \text{loss} = \frac{1}{2} \sum_i (output_i - target_i)^2
      ]
  4. 优化方法

    optimizer = optim.SGD(net.parameters(), lr=0.5)
    
    • 使用随机梯度下降(SGD)优化器,学习率为 0.5。
  5. 梯度清零

    optimizer.zero_grad()
    
    • 清零所有参数的梯度,防止累加。
  6. 反向传播

    loss.backward()
    
    • 计算损失函数关于每个参数的梯度。
  7. 打印梯度

    print(net.linear1.weight.grad.data)
    print(net.linear2.weight.grad.data)
    
    • 打印第一层和第二层权重的梯度值。
  8. 更新梯度

    optimizer.step()
    
    • 使用优化器更新网络参数。
  9. 打印更新后的网络参数

    print(net.state_dict())
    
    • 打印更新后的网络参数。

3. 具体计算过程在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

前向传播

总结

  • 网络结构:定义了一个包含两个全连接层的简单神经网络。
  • 前向传播:计算输入数据通过网络的输出。
  • 损失计算:计算输出与目标之间的均方误差损失。
  • 反向传播:计算损失函数关于每个参数的梯度。
  • 参数更新:使用优化器更新网络参数。
关键字:seo搜索引擎优化师_软件项目管理是什么_seo点击器_朋友圈推广平台

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: