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

免费建网站讨论/站长全网指数查询

免费建网站讨论,站长全网指数查询,开发公司合作协议,优良的定制网站建设服务商首先,给出一个数组x,然后基于表达式y3x22,加上一些噪音数据到达另一组数据y。然后,构建一个机器学习模型,学习表达式ywx2b的两个参数w、b。利用数组x,y的数据为训练数据。最后,采用梯度梯度下降…

首先,给出一个数组x,然后基于表达式y=3x2+2,加上一些噪音数据到达另一组数据y。然后,构建一个机器学习模型,学习表达式y=wx2+b的两个参数w、b。利用数组x,y的数据为训练数据。最后,采用梯度梯度下降法,通过多次迭代,学习到w、b的值。以下为具体步骤:

1)导入需要的库。

import numpy as np
%matplotlib inline
from matplotlib import pyplot as plt

2)生成输入数据x及目标数据y

设置随机数种子,方便多种方法进行比较

np.random.seed(100)x=np.linspace(-1,1,100).reshape(100,1)#我们把原本一维的、有100个元素的数组转换成了一个具有100行# 和1列的二维数组,也就是一个列向量。y=3*np.power(x,2)+2+0.2*np.random.rand(x.size).reshape(100,1)
#创建了一个新的变量 y,它表示的是基于 x 计算出的一个二次多项式 y=3x^2+2,再加上一些小的随机噪声,这些噪声的大小在 [0, 0.2) 范围内随机变化。

3)初始化权重参数

w1=np.random.rand(1,1)
b1=np.random.rand(1,1)

4) 训练模型

定义损失函数,假设批量大小为100,对损失函数求导,利用梯度下降法学习参数(学习率为lr)

import numpy as np# 假设 x, y 已经定义好
# 初始化参数
w1 = np.random.randn()  # 随机初始化权重
b1 = np.random.randn()  # 随机初始化偏置
lr = 0.001  # 学习率for i in range(800):  # 迭代800次# 前向传播y_pred = np.power(x, 2) * w1 + b1# 定义损失函数loss = 0.5 * np.sum((y_pred - y) ** 2)# 计算梯度grad_w = np.sum((y_pred - y) * np.power(x, 2))grad_b = np.sum(y_pred - y)# 使用梯度下降法更新参数w1 -= lr * grad_wb1 -= lr * grad_b

这个过程实际上是在寻找使得预测值 y_pred 尽可能接近真实值 y 的最佳参数组合 (w1, b1)。通过不断调整这些参数,我们可以逐渐减小损失函数的值,从而提高模型的准确性。

________________________________________________________________________

本节我们将使用PyTorch的一个自动求导的包——antograd,利用这个包及对应的Tensor,便可利用自动反向传播来求梯度,无须手工计算梯度。以下是具体实现代码。

1)导入需要的库。

import torch as t
%matplotlib inline
from matplotlib import pyplot as plt

2)生成训练数据,并可视化数据分布情况

t.manual_seed(100)
dtype=t.float#生成x坐标数据,x为tensor,需要把x的形状转换为100x1
x=t.unsqueeze(torch.linspace(-1,1,100),dim=1)#生成y坐标数据,y为tensor,形状为100x1,另外加上一些噪声
y=3*.x.pow(2)+2+0.2*torch.rand(x.size())

3) 初始化权重参数

# 参数w,b为需要学习,所以requires_grad=True
w=t.randn(1,1,dtype=dtype,requires_grad=True)
b=t.zeros(1,1,dtype=dtype,requires_grad=True)

4)训练模型

import torch as t# 假设 x, y, w, b 已经定义好,并且 w 和 b 需要是 requires_grad=True 的张量
lr = 0.001  # 学习率for ii in range(800):# 前向传播,并定义损失函数 lossy_pred = x.pow(2).mm(w) + bloss = 0.5 * (y_pred - y).pow(2).sum()# 自动计算梯度,梯度保存在 grad 属性中loss.backward()# 手动更新参数,需要用 torch.no_grad(),使上下文环境中切断自动求导的计算with t.no_grad():w -= lr * w.gradb -= lr * b.grad# 梯度清零w.grad.zero_()b.grad.zero_()
  • 使用 torch.no_grad() 上下文管理器来临时禁用自动求导,以便在不需要跟踪这些操作的情况下更新权重和偏置。这是因为我们只希望向前传递时记录操作用于自动求导,而在更新权重时则不需要。
  • w -= lr * w.grad 和 b -= lr * b.grad:按照梯度下降的方式更新权重和偏置。
  • w.grad.zero_() 和 b.grad.zero_():在每次更新之后,需要手动将梯度清零,否则梯度会累积,导致错误的更新步骤。
http://www.whsansanxincailiao.cn/news/31966896.html

相关文章:

  • 网站制作多少钱方案/百度正版下载
  • 武汉市新洲区城乡建设局网站/800元做小程序网站
  • 精品网站建设多少钱/衡阳有实力seo优化
  • 电器网站建设策划书/山东16市最新疫情
  • 网站展示模板免费下载/seo做的好的网站
  • 陕西江川建设有限公司公司网站/百度搜索引擎优化方案
  • dz做网站js不起作用/关键词完整版免费听
  • 自媒体还是做网站/微网站
  • 网站更换备案吗/大泽山seo快速排名
  • 优化网站建设价格/网络营销一个月能挣多少钱
  • 自己做资讯网站/西安关键词seo公司
  • 婚纱摄影网站源码下载/营销方案怎么写模板
  • 网站建设公司代理商/企业文化标语经典
  • 企业网站的分类/电子商务主要学什么就业方向
  • 模板板网站/seo外链发布
  • 品牌营销策划师/惠州关键词排名优化
  • 网站导航栏的作用/永久免费用的在线客服系统
  • 标准化建设考评网站/优化搜狗排名
  • 建网站问题/微信上怎么做广告推广
  • 做讲课ppt的网站/关于seo的行业岗位有哪些
  • vs网站开发实例/网站搜索量查询
  • 网站开发设计需求文档/武汉网站建设优化
  • 动漫制作专业有本科吗/优化设计七年级下册数学答案
  • 网站开发的编程语言/网络推广是什么意思
  • 重庆免费自助建站模板/营销案例分析
  • 肯德基网站建设/怎样宣传自己的产品
  • 重庆市建设工程施工安全网/杭州seo排名收费
  • 免费建站哪里找/怎么做网站推广和宣传
  • 网站建设一条龙/淘宝客推广一天80单
  • 亚马逊网站运营怎么做/新手seo要学多久