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

顺德 网站开发 招聘深圳seo优化公司

顺德 网站开发 招聘,深圳seo优化公司,管局审核网站名称,西安好的网站建设公司在从0开始深度学习(5)——线性回归的逐步实现中,我们手动编写了数据构造模块、损失函数模块、优化器等,但是在现代深度学习框架下,这些已经包装好了 本章展示如果利用深度学习框架简洁的实现线性回归 0 导入头文件 im…

在从0开始深度学习(5)——线性回归的逐步实现中,我们手动编写了数据构造模块、损失函数模块、优化器等,但是在现代深度学习框架下,这些已经包装好了
本章展示如果利用深度学习框架简洁的实现线性回归

0 导入头文件

import random
import torch
import matplotlib.pyplot as plt
from torch.utils import data
import numpy as np
from torch import nn#nn是神经网络的缩写

1 生成数据集

和之前的数据一样

def synthetic_data(w, b, num_examples):  #@save"""生成y=Xw+b+噪声"""X = torch.normal(0, 1, (num_examples, len(w)))y = torch.matmul(X, w) + by += torch.normal(0, 0.01, y.shape)return X, y.reshape((-1, 1))true_w = torch.tensor([2, -3.4])# 真实的W,是个二维张量
true_b = 4.2# 真实的b
features, labels = synthetic_data(true_w, true_b, 1000)# 生成1000个点# 绘制散点图
plt.scatter(features[:, 0].numpy(), labels.numpy(), 1.0)
plt.xlabel('Feature')
plt.ylabel('Label')
plt.title('Scatter Plot of Generated Data')
plt.show()

2 读取数据

直接使用torch中的TensorDatasetDataLoader

  • TensorDataset 是 PyTorch 中的一个类,它将数据和对应的标签组合成一个数据集对象。
  • DataLoader 是 PyTorch 提供的一个迭代器,可以用来批量加载数据,并且能够处理多线程数据读取、数据打乱等任务。
# 读取数据
def load_data(data_array,batch_size):dataset=data.TensorDataset(*data_array)return data.DataLoader(dataset,batch_size,shuffle=True)batch_size=10
data_iter=load_data((features,labels),batch_size)

3 定义模型

直接使用torch自带的神经网络中的全连接层,全连接层和线性回归模型都使用线性变换来生成输出, 所以可以用全连接层来实现线性回归

net = nn.Sequential(nn.Linear(2, 1))
# 第一个参数是输出的特征形状,第二个是输出的特征形状
# 因为我们的w是个二维向量,所以这里的形状是2

4 初始化参数

我们的函数是 y = w x + b y=wx+b y=wx+b,所以有一个权重 w w w和偏置项 b b b

#初始化权重,通常情况下,权重可以从一个正态分布中初始化,这样可以确保权重的初始值既不是太大也不是太小,有助于模型的收敛。
net[0].weight.data.normal_(0,0.01)# 从均值为 0、标准差为 0.01 的正态分布中初始化权重。
#初始化偏置项,偏置通常初始化为 0
net[0].bias.data.fill_(0)

5 定义损失函数和优化器

之前是手写的,这里我们可以直接使用torch自带的

# 定义损失函数
loss=nn.MSELoss()
#定义优化算法
trainer=torch.optim.SGD(net.parameters(),lr=0.01)
#第一个参数是指,返回所有需要更新的参数,第二个是学习率

6 训练模型

注意: 每次都要初始化梯度为0,避免梯度累积,每次反向传播之前将梯度清零,可以确保每次更新都是基于当前批次的数据

total_epochs=3
for epoch in range(total_epochs):for X,y in data_iter:# X是特征数据,y是标签l=loss(net(X),y)# 前向传播,生成预测,并计算损失trainer.zero_grad()# 初始化梯度l.backward()# 反向传播计算梯度trainer.step()# 调用优化器更新参数l=loss(net(features),labels)print(f'epoch {epoch + 1}, loss {l:f}')

7 评估模型

最后和我们的真实权重 w w w和偏置项 b b b做差,观察差距

w = net[0].weight.data
print('w的估计误差:', true_w - w.reshape(true_w.shape))
b = net[0].bias.data
print('b的估计误差:', true_b - b)
http://www.dinnco.com/news/39838.html

相关文章:

  • seo网站建设规划抖音关键词挖掘工具
  • 哪些网站做英语比较好网络推广公司运作
  • 泰安做网站建设的深圳seo网络推广
  • 疫情防控措施优化南宁seo网络优化公司
  • 做网站建设要什么证百度快照收录入口
  • 沈阳哪里可以做网站营销百度学术查重
  • 重庆公司社保多少钱一个月sem优化是什么
  • 摄影展示网站源码竞价账户
  • 网站开发凭证做什么科目老王搜索引擎入口
  • 自己做网站需要什么媒体135网站
  • 广州最穷的三个区seo指导
  • 游戏网站开发难度潍坊seo按天收费
  • 舟山市定海区建设规划局网站网络营销活动策划方案
  • 宁陵做网站的公司软文推广300字
  • 商城网站如何设计公司网站设计需要多少钱
  • 做军事网站的项目背景图片山东seo多少钱
  • 面签拍照 网站备案国外b站浏览器
  • 做擦边网站明年2024年有疫情吗
  • 网页设计与网站建设课程设计学网络与新媒体后悔死了
  • 自己做的网站怎么加入微信支付杭州seo中心
  • 如何制作手机网站模板惠州seo博客
  • 帮做非法网站美国搜索引擎排名
  • 什么网站可以做pie chart宁波seo入门教程
  • 怎么申请一个商城网站.seo推广经验
  • 怎么样做网站的目录结构多用户建站平台
  • 高端网站建设 杭州网站建设山东聚搜网络
  • 知乐商城是什么网站海外品牌推广
  • 如何在企业版社保网站做增员网页设计工资一般多少
  • 给客户做网站需要提供免费网站建站2773
  • 上海自助建网站宁波网站推广哪家公司好