- 2024-11-20【神经网络基础】
神经网络基础1.损失函数1.损失函数的概念2.分类任务损失函数-多分类损失:3.分类任务损失函数-二分类损失:4.回归任务损失函数计算-MAE损失5.回归任务损失函数-MSE损失6.回归任务损失函数-SmoothL1损失2.网络优化方法1.梯度下降算法2.反向传播算法(BP算法)3.梯度下降优
- 2024-11-10深度学习(三)2.利用pytorch实现线性回归
一、基础概念1.线性层线性层(LinearLayer)是神经网络中的一种基本层,也称为全连接层(FullyConnectedLayer)。它的工作方式类似于简单的线性方程:y=Wx+b,其中W是权重矩阵,x是输入,b是偏置项,y是输出。线性层的主要任务是将输入的数据通过权重和偏置进行线性变换,从而生成输出
- 2024-11-02pytorch自动微分
求导是几乎所有深度学习优化算法的关键步骤,因为在优化损失函数时会用反向传播,即使参数朝着梯度下降的方向调整,求梯度即求偏导。虽然求导的计算很简单,但对于复杂的模型,手动进行更新很容易出错。Pytorch通过自动微分来加快求导。他会先构建一个计算图(computationalgraph),来跟踪计
- 2024-11-01autograde
autograd自动求导torch.Tensor与torch.Function为autograd的核心类,其相互连接生成DAG,PyTorch采用动态计算图,每次前向传播时会重新构建计算图Tensor部分属性说明:requires_grad属性新建Tensor时,用requires_grad参数指定是否记录对叶子节点的操作,便于backward()求解梯度requi
- 2024-10-22十三、PyTorch基础:Tensor和Autograd
1、Tensor Tensor,又名张量,是Theano、TensorFlow、Torch和MxNet中重要的数据结构。从工程角度来讲,可简单地认为它就是一个数组,且支持高效的科学计算。它可以是一个数(标量)、一维数组(向量)、二维数组(矩阵)和更高维的数组(高阶数据)。Tensor和Numpy的ndarrays类似,但PyTorch的tensor支
- 2024-10-17pix2pix模型测试时不使用model.eval()
目录pix2pix特殊之处理论基础:model.eval()、model.train()、withtorch.no_grad()model.eval()、model.train()withtorch.no_grad()实际操作参考资料pix2pix特殊之处pix2pix模型在测试时与众不同的特点:1、使用dropout,引入随机性,否则容易无论什么输入都生成一样的图2、使用Bat
- 2024-10-13无约束优化问题
收敛速度由算法A产生的迭代序列${xk}$在某种意义下收敛到$x$即$\lim_{k\to\infty}\left|xk-x\right|=0$,且存在常数$\alpha>0,q>0$$$s.t.\lim_{k\to\infty}\frac{\left|x{k+1}-x*\right|}{\left|xk-x*\right|^{\alpha}}=q$$则称算法A产生的点列${x^k}$
- 2024-10-06torch神经网络温度预测
数据件文件temp.csv"""气温预测"""importdatetimeimportnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimporttorchimporttorch.optimasoptimimportwarningswarnings.filterwarnings('ignore')features
- 2024-09-25可微TopK算子
形式及推导形式:前向计算如下所示,\[\text{TopK}(\vec{x},k)=\sigma(\vec{x}+\Delta(\vec{x},k))\]注意\(\Delta(\cdot)\)满足限制条件\(\sum\Delta(\vec{x},k)=k\),并且\(\sigma(x)=\frac{1}{1+\exp\{-x\}}\)梯度推导:令\(f(\vec{x},k)=\sigma(\vec{x}+\De
- 2024-09-24【深度学习】03-神经网络 3-3 梯度下降的优化方法-动量算法Momentum
常规的梯度下降算法中,会遇到平缓区域,碰到鞍点,碰到局部最小值(截止当前无解),因此为了解决这个问题,我们需要优化传统的梯度下降算法。动量算法(Momentum)是梯度下降算法的一种优化方法,旨在解决传统梯度下降容易陷入局部最小值或在鞍点附近震荡的问题。动量算法通过引入一个“动
- 2024-09-24日新月异 PyTorch - pytorch 基础: 自动求导
源码https://github.com/webabcd/PytorchDemo作者webabcd日新月异PyTorch-pytorch基础:自动求导示例如下:basic\demo02.pyimporttorchimportmath#自动求导的简单说明defsample1():#requires_grad用于表示是否需要自动求导k=torch.tensor(1.23
- 2024-09-22DFP算法-MATLAB
背景DFP算法是在20世纪60年代初期由Davidon、Fletcher和Powell共同开发的,是拟牛顿法(Quasi-NewtonMethods)的一种重要实现。拟牛顿法的基本思想是利用目标函数在当前点附近的二次近似来构造搜索方向,并通过迭代更新这一近似来逼近真实的解。DFP算法通过不断更新Hessian矩阵的逆
- 2024-09-12PyTorch----模型运维与实战
一、PyTorch是什么PyTorch由Facebook开源的神经网络框架,专门针对GPU加速的深度神经网络(DNN)编程。二、PyTorch安装首先确保你已经安装了GPU环境,即Anaconda、CUDA和CUDNN随后进入Pytorch官网PyTorch官网会自动显示符合你电脑配置的Pytorch版本,复制指令到cuda
- 2024-09-10基于matlab的通过解方程来动态调整学习率的想法和固定学习率的梯度下降法
通过解方程来动态调整学习率的想法,在实际应用中可能并不实用,因为它涉及到解符号方程,这可能会非常复杂或无法解析地求解,同时会增加计算复杂度和时间,固定学习率或基于某种规则(如线搜索)调整学习率更为常见。建议探索更高级的梯度下降变体(如Adam、RMSprop等),这些算法自动调整学习率
- 2024-09-07深度学习实战4--GAN进阶与优化
GAN 的问题主要有两点:Loss 等于0的梯度消失问题和梯度不稳定以及多样性受损。前者是因为选择的分布函数使用JS距离,这个距离不能衡量两个不相交的分布的距离;后者是因为Loss 函数要求KL距离最小,JS 距离最大,所以梯度不稳定,而且 Loss 函数对正确率要
- 2024-09-07Pytorch相关(第二篇)
Pytorch自动梯度法,实现自定义向前向后传播方法在PyTorch中,自定义自动求导的功能可以通过实现继承自 torch.autograd.Function 的类来实现。这允许您定义自己的前向传播(forward)和反向传播(backward)逻辑。下面是如何自定义实现向前和向后传播的详细步骤和示例代码。自定义 au
- 2024-09-07Pytorch相关(第一篇)
torch.autograd.Function使用方法torch.autograd.Function 是PyTorch提供的一个接口,用于自定义自动求导的操作。通过继承这个类,你能够定义自定义的前向和反向传播逻辑。下面是使用 torch.autograd.Function 的基本步骤以及示例。自定义 Function 的步骤继承 torch.au
- 2024-08-31PyTorch~Tensor
为什么深度学习中要用Tensor,而不是直接用numpy?发现很多人没有说到重点,首先,数学上的tensor和编程上的(pytorch)内的tensor是两个概念。数学上的tensor是用来研究高维矩阵之间的一些表达方式和运算性质的(比如高维空间的度量如何更加通用的定义),pytorch里面的tensor是一个数据
- 2024-08-28深度学习-pytorch-basic-002
from__future__importprint_functionimporttorchastx=t.Tensor(5,3)#构建(5,3)的矩阵,只是分配空间,未初始化print(x)tensor([[1.0194e-38,8.4490e-39,1.0469e-38],[9.3674e-39,9.9184e-39,8.7245e-39],[9.2755e-39,8.9082e-39,9.9184
- 2024-08-27pytorch常见错误_0240826
pytorch常见错误RuntimeError:aleafVariablethatrequiresgradisbeingusedinanin-placeoperation.如下程序会抱上述错误x=torch.randn(3,requires_grad=True)x+=1#原位操作报错:RuntimeError:aleafVariablethatrequiresgradisbeingusedinan
- 2024-08-223-线性回归从零实现
1、注意=和-=在梯度更新时的区别defminbatch_sgd(params,lr,batch_size):withtorch.no_grad():forparaminparams:param=param-lr*param.grad/batch_sizeparam.grad.zero_()这段代码是错误的,应该改成param-=lr*param.grad/batch_size原因如下:import
- 2024-08-13关于Pytorch中net.eval()和torch.no_grad()的意义理解
Q:defevaluate_accuracy(net,data_iter):#@save"""计算在指定数据集上模型的精度"""ifisinstance(net,torch.nn.Module):net.eval()#将模型设置为评估模式metric=Accumulator(2)#正确预测数、预测总数withtorch.no_grad():
- 2024-08-124-反向传播
从这张图片,可以看出。不管我们有多少层,都可以化简成最简形式。我们添加的层就没有意义。所以我们要对每一层的输出做非线性变换,增加模型的复杂程度,使它没法化简反向传播的流程pytorch的tensor数据结构看到代码,要能把计算图构建出来,而不是简单的乘除运算在上面这张图,w
- 2024-08-123-随机梯度下降
随机梯度下降可以跨越鞍点对每一个样本的梯度进行更新点击查看代码importnumpyasnpimportmatplotlib.pyplotaspltx_data=[1.0,2.0,3.0]y_data=[2.0,4.0,6.0]w=1.0defforward(x):returnx*wdefloss(x,y):y_pred=forward(x)ret
- 2024-08-112-梯度下降算法
梯度下降算法只能保证找到的是局部最优,不是全局最优平常我们经过大量实验,发现局部最优点不是很多,所以可以使用梯度下降算法。但是还要提防鞍点下面进行实现梯度下降算法点击查看代码importnumpyasnpimportmatplotlib.pyplotaspltx_data=[1.0,2.0,3.0]y_