news 2026/6/20 5:46:44

pytorch深度学习笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pytorch深度学习笔记

目录

摘要

1.神经网络的梯度计算

2.梯度下降法(Gradient Descent)


摘要

本篇文章继续学习尚硅谷深度学习教程,学习内容是神经网络的梯度计算,代码实现用梯度下降法

1.神经网络的梯度计算

在神经网络的学习中,梯度的计算非常重要。神经网络中的梯度,指的就是损失函数关于权重参数的梯度。我们以一个单层的简单网络为例,形状为2×3,权重参数为W,损失函数记为L。那么它的权重参数和梯度为:

这里,梯度也是一个2×3的矩阵,其中各个元素由L关于W中各元素的偏导数构成。

代码如下:

import numpy as np from common.functions import softmax,cross_entropy_error from common.gradient import numerical_gradient class simpleNet: def __init__(self): self.W = np.random.randn(2,3) def forward(self, x): a= x @ self.W return softmax(a) def loss(self, x, t): y = self.forward(x) loss = cross_entropy_error(y, t) return loss x = np.array([0.6, 0.9]) t = np.array([0, 0, 1]) net = simpleNet() f = lambda w: net.loss(x, t) dW = numerical_gradient(f, net.W) print(dW)

测试:

2.梯度下降法(Gradient Descent

梯度下降法(Gradient Descent是一种用于最小化目标函数的迭代优化算法。核心是沿着目标函数(如损失函数)的负梯度方向逐步调整参数,从而逼近函数的最小值。梯度方向指示了函数增长最快的方向,因此负梯度方向是函数下降最快的方向。

具体来说,我们初始找到函数f(x1,x2)的一个点(x1,x2),按下式进行更新

这样就可以沿着负梯度方向,找到一个新的点(x1',x2'),让函数值更小。这里的η表示每次的更新量,在神经网络的学习过程中,就代表了一次学习的步长(一次学习多少、多大程度去更新参数),称为学习率(learning rate)。学习率需要预先设定好,过大或过小都会导致学习效果不佳。

梯度下降法可以代码实现如下:

import numpy as np import matplotlib.pyplot as plt from common.gradient import numerical_gradient def gradient_descent(f, init_x, lr=0.01, step_num=100): x = init_x #保存x变化 x_history = [] for i in range(step_num): x_history.append( x.copy() ) grad = numerical_gradient(f, x) x -= lr * grad return x, np.array(x_history)

案例测试

#定义目标函数f(x)=x1^2+x2^2 def f(x): return x[0]**2 + x[1]**2 if __name__ == '__main__': init_x=np.array([-3.0,4.0]) #超参数 lr=0.1 num_iter=20 #梯度下降法计算最小值 x, x_history = gradient_descent(f, init_x, lr, num_iter) print("最小值点为:",x)

测试

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 0:12:24

华为云国际站代理商的UCS主要有什么作用呢?

华为云国际站代理商的 UCS(分布式云原生服务),核心作用是为跨境 / 多云业务提供跨云跨地域 K8s 集群统一管理、智能调度与流量治理,叠加代理商的本地化服务,高效解决多集群运维、合规与成本难题。以下是具体功能与代理…

作者头像 李华
网站建设 2026/6/20 15:20:06

华为云国际站代理商DSS的跨区域备份与恢复具体是如何实现的?

华为云国际站 DSS 跨区域备份与恢复,核心通过CBR/CSBS 备份 跨区域复制策略 SDRS 容灾实现,代理商负责方案设计、权限配置、网络打通与全流程实施,保障 RPO≈分钟级、RTO≈小时级,满足跨境合规与业务连续性要求。核心实现架构&a…

作者头像 李华
网站建设 2026/6/20 4:59:40

2025年软件测试从业者经验总结:趋势、挑战与最佳实践

一、2025年软件测试行业最新发展趋势 2025年,软件测试行业正经历着前所未有的变革,AI技术的深度应用正在重塑整个质量保障体系。根据行业最新动态,我们可以总结出以下关键趋势: AI测试平台与"无人测试"的崛起‌&#…

作者头像 李华
网站建设 2026/6/19 9:07:41

Langchain-Chatchat支持语音输入输出吗?扩展方案介绍

Langchain-Chatchat支持语音输入输出吗?扩展方案介绍 在企业知识管理日益智能化的今天,越来越多组织开始部署本地化的大模型问答系统,以应对数据隐私与合规性挑战。其中,Langchain-Chatchat 凭借其出色的私有文档解析能力和完全离…

作者头像 李华
网站建设 2026/6/18 18:15:18

小程序计算机毕设之基于JAVA+SpringBoot+MySQL+微信小程序的大学生校园兼职小程序基于springboot+微信小程序校园学生兼职系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/18 1:51:04

Netty(19)Netty的性能优化手段有哪些?

Netty提供了多种性能优化手段,下面是一些常见的优化技术,结合代码示例进行详细解释:使用池化的ByteBuf: Netty中的ByteBuf提供了池化的功能,通过重用ByteBuf实例,减少内存分配和释放的开销。可以使用Pooled…

作者头像 李华