pytorch反向传播实现——up主:刘二大人《pytorch深度学习实践》(代码片段)

不吃水果的太空人 不吃水果的太空人     2023-03-30     372

关键词:

教程: https://www.bilibili.com/video/BV1Y7411d7Ys?p=2&vd_source=715b347a0d6cb8aa3822e5a102f366fe
数据集:
x d a t a = [ 1.0 , 2.0 , 3.0 ] y d a t a = [ 2.0 , 4.0 , 6.0 ] x_data = [1.0, 2.0, 3.0] \\\\y_data = [2.0, 4.0, 6.0] xdata=[1.0,2.0,3.0]ydata=[2.0,4.0,6.0]
参数初始值:
w 1 = 1.0 w 2 = 1.0 b = 1.0 w_1=1.0\\\\w_2=1.0\\\\b=1.0 w1=1.0w2=1.0b=1.0
模型:
y = w 1 ∗ x 2 + w 2 ∗ x + b y = w_1*x^2+w_2*x+b y=w1x2+w2x+b

import torch
import matplotlib.pyplot as plt

x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]

w1 = torch.Tensor([1.0])
w1.requires_grad = True
w2 = torch.Tensor([1.0])
w2.requires_grad = True
b = torch.Tensor([1.0])
b.requires_grad = True

epoch_p = []
loss_p = []

def forward(x):
  return w1 * x ** 2 + w2 * x + b

def loss(x, y):
  y_pred = forward(x)
  return (y_pred - y) ** 2

for epoch in range(100):
  for x, y in zip(x_data, y_data):
    l = loss(x, y)
    l.backward()
    print('\\tgrad:', x, y, w1.grad.item(), w2.grad.item(), b.grad.item())
    w1.data = w1.data - 0.01 * w1.grad.data
    w2.data = w2.data - 0.01 * w2.grad.data
    b.data = b.data - 0.01 * b.grad.data
    w1.grad.data.zero_()
    w2.grad.data.zero_()
    b.grad.data.zero_()
    loss_p.append(l.item())
    epoch_p.append(epoch)
  print('Epoch:', epoch, l.item())

print("predict(aftertraining)",4,forward(4).item())
plt.figure()
plt.plot(epoch_p, loss_p, c = 'b')
plt.xlabel('Epoch')
plt.ylabel('loss')
plt.show()

pytorch学习2b站刘二大人《pytorch深度学习实践》——梯度下降算法(gradientdescent)(代码片段)

b站课程链接:梯度下降算法一、梯度下降算法1.简介梯度下降算法是一种求解函数最优值的迭代算法,给定一个初值,通过负梯度方向进行更新查找。2.程序实现及结果importmatplotlib.pyplotasplt#训练集x_data=[1.0,2.0,3.0]y_... 查看详情

pytorch深度学习:用pytorch实现线性回归(代码片段)

课程来源:Bilibili刘二大人《用PyTorch实现线性回归》代码大致思路:铺垫:创建数据集、构建计算模型定义损失函数和优化方式训练:通过forward函数进行前馈loss记录损失值清除上一次的梯度值反向传播并记录梯... 查看详情

pytorch学习1b站刘二大人《pytorch深度学习实践》——线性模型(linearmodel)(代码片段)

b站课程链接:线性模型1.基本思想:给出了一组一维数据,定义了一个简单的线性拟合函数,通过穷举法来列出一些权重(拟合函数的系数),并计算这些权重对应的拟合损失函数(使用均方误差&#... 查看详情

pytorch学习2b站刘二大人《pytorch深度学习实践》——梯度下降算法(gradientdescent)(代码片段)

b站课程链接:梯度下降算法一、梯度下降算法1.简介梯度下降算法是一种求解函数最优值的迭代算法,给定一个初值,通过负梯度方向进行更新查找。2.程序实现及结果importmatplotlib.pyplotasplt#训练集x_data=[1.0,2.0,3.0]y_... 查看详情

pytorch深度学习——逻辑斯蒂回归(分类问题)(b站刘二大人p6学习笔记)(代码片段)

目录1什么是分类问题?2为什么要使用逻辑斯蒂回归?3SigmidFounction(逻辑斯蒂回归函数)3.1模型的改变3.2损失函数的改变(BCELoss) 3.3代码的改变1什么是分类问题?    分类问题,与之前学习的... 查看详情

pytorch学习1b站刘二大人《pytorch深度学习实践》——线性模型(linearmodel)(代码片段)

b站课程链接:线性模型1.基本思想:给出了一组一维数据,定义了一个简单的线性拟合函数,通过穷举法来列出一些权重(拟合函数的系数),并计算这些权重对应的拟合损失函数(使用均方误差&#... 查看详情

pytorch案例代码

来自刘二大人课程最简单的线性回归最简单的逻辑斯蒂回归(二分类)improttorch.nn.functionalasF 查看详情

《pytorch深度学习实践》介绍

...bsp;     本文为bilibili刘二大人所讲的《PyTorch深度学习实践》学习笔记介绍。       笔记融入了自己对课程和代码的理解,希望对大家有所帮助,由于本人知识尚浅,如果笔记中有任何... 查看详情

pytorch 如何通过 argmax 反向传播?

】pytorch如何通过argmax反向传播?【英文标题】:Howdoespytorchbackpropthroughargmax?【发布时间】:2019-07-2423:06:42【问题描述】:我在pytorch中使用质心位置的梯度下降而不是期望最大化来构建Kmeans。损失是每个点到其最近质心的平方距... 查看详情

了解 PyTorch 中的反向传播

】了解PyTorch中的反向传播【英文标题】:UnderstandingbackpropagationinPyTorch【发布时间】:2021-11-2020:41:37【问题描述】:我在探索PyTorch,看不懂下面例子的输出:#Initializex,yandztovalues4,-3and5x=torch.tensor(4.,requires_grad=True)y=torch.tensor(-3.,req... 查看详情

神经网络反向传播梯度计算数学原理

...向传播梯度计算数学原理1文章概述本文通过一段来自于Pytorch官方的warm-up的例子:使用numpy来实现一个简单的神经网络。使用基本的数学原理,对其计算过程进行理论推导,以揭示这几句神奇的代码后面所包含的原理。估计对大... 查看详情

学习笔记pytorch十二损失函数与反向传播(代码片段)

【学习笔记】【Pytorch】十二、损失函数与反向传播一、损失函数的介绍1.L1Loss类的使用代码实现2.MSELoss类的使用3.损失函数在模型中的实现二、反向传播一、损失函数的介绍参考:损失函数(lossfunction)pytorchloss-functio... 查看详情

pytorch自定义多分类损失函数怎么反向传播

参考技术A只要自定义的损失函数的计算都是用的torch包内的函数,反向传播时跟平时一样loss=customLossFunc(yhat,y)loss.backward()optimizer.step() 查看详情

torch教程[3]使用pytorch自带的反向传播

#-*-coding:utf-8-*-importtorchfromtorch.autogradimportVariabledtype=torch.FloatTensor#dtype=torch.cuda.FloatTensor#UncommentthistorunonGPU#Nisbatchsize;D_inisinputdimension;#Hishiddendimension;D_outis 查看详情

如何使用 Pytorch 中的截断反向传播(闪电)在很长的序列上运行 LSTM?

】如何使用Pytorch中的截断反向传播(闪电)在很长的序列上运行LSTM?【英文标题】:HowtorunLSTMonverylongsequenceusingTruncatedBackpropagationinPytorch(lightning)?【发布时间】:2021-06-2808:05:30【问题描述】:我有一个很长的时间序列,我想将... 查看详情

pytorch自定义function

...UFunction;    在之前的介绍中,我们知道,Pytorch是利用Variable与Function来构建计算图的。回顾下Variable,Variable就像是计算图中的节点,保存计算结果(包括前向传播的激活值,反向传播的梯度),而Function就像计算... 查看详情

pytorch实现线性回归(代码片段)

前向传播:  tensor中的require_grad参数:    设置为True时,会记录该tensor的计算过程;  tensor中的grad_fn属性:    用来保存计算过程;  tensor设置requires_grad=True后不保留计算过程可使用:    withtorch.no_grad():... 查看详情

pytorch实现简单的分类器(代码片段)

作为目前越来越受欢迎的深度学习框架,pytorch基本上成了新人进入深度学习领域最常用的框架。相比于TensorFlow,pytorch更易学,更快上手,也可以更容易的实现自己想要的demo。今天的文章就从pytorch的基础开始,帮助大家实现成... 查看详情