当前位置: 首页 > news >正文

专门做二维码的网站php开发

专门做二维码的网站,php开发,wordpress ios git,网站备案在哪个网文章目录 简述代码重构要点 数学模型、运行结果数据构建与分批模型封装运行测试 简述 python使用 数值微分法 求梯度,实现单层线性回归-CSDN博客 python使用 计算图(forward与backward) 求梯度,实现单层线性回归-CSDN博客 数值微分…

文章目录

    • 简述
      • 代码重构要点
    • 数学模型、运行结果
    • 数据构建与分批
    • 模型封装
    • 运行测试

简述

python使用 数值微分法 求梯度,实现单层线性回归-CSDN博客
python使用 计算图(forward与backward) 求梯度,实现单层线性回归-CSDN博客
数值微分求梯度、计算图求梯度,实现单层线性回归 模型速度差异及损失率比对-CSDN博客

上述文章都是使用python来实现求梯度的,是为了学习原理,实际使用上,pytorch实现了自动求导,原理也是(基于计算图的)链式求导,本文还就 “单层线性回归” 问题用pytorch实现。

代码重构要点

1.nn.Moudle

torch.nn.Module的继承、nn.Sequentialnn.Linear
torch.nn — PyTorch 2.4 documentation

对于nn.Sequential的理解可以看python使用 计算图(forward与backward) 求梯度,实现单层线性回归-CSDN博客一文代码的模型初始化与计算部分,如图:

在这里插入图片描述

nn.Sequential可以说是把图中标注的代码封装起来了,并且可以放多层。

2.torch.optim优化器

本例中使用随机梯度下降torch.optim.SGD()
torch.optim — PyTorch 2.4 documentation
SGD — PyTorch 2.4 documentation

3.数据构建与数据加载

data.TensorDatasetdata.DataLoader,之前为了实现数据分批,手动实现了data_iter,现在可以直接调用pytorch的data.DataLoader

对于data.DataLoader的参数num_workers,默认值为0,即在主线程中处理,但设置其它值时存在反而速度变慢的情况,以后再讨论。

数学模型、运行结果

y = X W + b y = XW + b y=XW+b

y为标量,X列数为2. 损失函数使用均方误差。

运行结果:

在这里插入图片描述

在这里插入图片描述

数据构建与分批

def build_data(weights, bias, num_examples):  x = torch.randn(num_examples, len(weights))  y = x.matmul(weights) + bias  # 给y加个噪声  y += torch.randn(1)  return x, y  def load_array(data_arrays, batch_size, num_workers=0, is_train=True):  """构造一个PyTorch数据迭代器"""  dataset = data.TensorDataset(*data_arrays)  return data.DataLoader(dataset, batch_size=batch_size, num_workers=num_workers, shuffle=is_train)

模型封装

class TorchLinearNet(torch.nn.Module):  def __init__(self):  super(TorchLinearNet, self).__init__()  model = nn.Sequential(Linear(in_features=2, out_features=1))  self.model = model  self.criterion = nn.MSELoss()  def predict(self, x):  return self.model(x)  def loss(self, y_predict, y):  return self.criterion(y_predict, y)

运行测试

if __name__ == '__main__':  start = time.perf_counter()  true_w1 = torch.rand(2, 1)  true_b1 = torch.rand(1)  x_train, y_train = build_data(true_w1, true_b1, 5000)  net = TorchLinearNet()  print(net)  init_loss = net.loss(net.predict(x_train), y_train)  loss_history = list()  loss_history.append(init_loss.item())  num_epochs = 3  batch_size = 50  learning_rate = 0.01  dataloader_workers = 6  data_loader = load_array((x_train, y_train), batch_size=batch_size, is_train=True)  optimizer = torch.optim.SGD(net.parameters(), lr=learning_rate)  for epoch in range(num_epochs):  # running_loss = 0.0  for x, y in data_loader:  y_pred = net.predict(x)  loss = net.loss(y_pred, y)  optimizer.zero_grad()  loss.backward()  optimizer.step()  # running_loss = running_loss + loss.item()  loss_history.append(loss.item())  end = time.perf_counter()  print(f"运行时间(不含绘图时间):{(end - start) * 1000}毫秒\n")  plt.title("pytorch实现单层线性回归模型", fontproperties="STSong")  plt.xlabel("epoch")  plt.ylabel("loss")  plt.plot(loss_history, linestyle='dotted')  plt.show()  print(f'初始损失值:{init_loss}')  print(f'最后一次损失值:{loss_history[-1]}\n')  print(f'正确参数: true_w1={true_w1}, true_b1={true_b1}')  print(f'预测参数:{net.model.state_dict()}')
http://www.yayakq.cn/news/829137/

相关文章:

  • 专业网站搭建定做什么语言做网站
  • 网站安全 重要性手机怎么建自己的网站
  • l建设银行网站哪个wordpress编辑器
  • 公司 网站建设 简介网页设计作业网站
  • 网站建站网站多少钱不会技术怎么做公司网站
  • 一流的网站建设与优化辽宁省建设工程信息网官网招标
  • 新网站不被收录邳州城乡建设局网站
  • 网站型和商城型有什么区别怎么做夜场网站
  • 建设建设银行甘肃分行网站满版型网站有哪些
  • 石家庄做网站推广排名的公司wordpress 导购
  • 乡镇美丽乡村建设网站信息简体中文wordpress5.2下载
  • 那个网站可以做恒指 买涨买跌wordpress退出登录
  • 阿里云万网网站制作有哪些企业可以做招聘的网站有哪些方面
  • 网站在vps能访问 在本地访问不了电子商务网站建设资料
  • 品牌建设助力高质量发展网站建设搜索优化
  • 网站空间去哪买公司网站建设须知
  • 电商网站建设思维导图便利的合肥网站建设
  • 本地赣州网站建设二级分销小程序
  • 河北盛通公路建设有限公司网站响应式网站模板免费下载
  • 小视频网站开发咨询公司组织架构
  • 北滘建网站大连仟亿科技网站建设公司 概况
  • 锦州建设局网站网站建设电话营销
  • 为什么要建设商城网站商丘市住房和城乡建设厅网站
  • 网站seo优化方案设计织梦cms做电影网站
  • 怎么寻找网站关键词并优化网站开发计入会计 什么科目
  • 网站设计怎么收费露兜博客 wordpress
  • 建设银行甘肃省行网站厦门网站seo
  • 职教集团网站建设四川建设信息网
  • 网站建设中页面下载网站整体地图怎么做
  • 自己有网站做app吗西安seo排名外包