首页 > 其他分享 >深度学习基础语法

深度学习基础语法

时间:2023-07-30 14:34:05浏览次数:39  
标签:学习 tensor inputs sum torch 张量 语法 深度 data

深度学习基础-李沐课程跟学

数据操作+数据预处理

  • 定义一个1-11个数值的一维张量
x = torch.arange(12)
tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
  • 通过shape访问张量的形状和张量中元素的总数
x.shape
  • 元素总数
x.numel
  • 改变一个张量的形状,但是不改变元素数量和元素值
#3行4列
x = x.reshape(3,4)
  • 使用全0、全1、其他常量或者从特定分布中随机采样的数字
#形状是(三维)2 3 4
torch.zeros((2,3,4))
torch.ones((2,3,4))
  • 嵌套python列表赋值
troch.tensor([[1,2,3,4],[2,3,4,1],[2,4,1,5]])
  • 加减乘除运算
x = torch.tensor([1.0,2,3,1])
y = torch.tensor([2,2,1,3])
x+y,x-y,x*y,x/y,x**y
#**表示求幂运算
#指数运算
torch.exp(x)
  • 把多个张量连结在一起
x = torch.arange(12,dtype=torch.float32).reshape((3,4))
y = torch.tensor([[2.0,1,4,3],[1,2,3,4],[4,3,2,1]])
#0按行连结,1按列连结
torch.cat((x,y),dim=0),torch.cat((x,y),dim=1)
  • 逻辑运算符判断两个张量是否相等
    x==y
  • 对张量中所有元素进行求和会生成一个只有一个元素的张量—sum后是一个标量
    x.sum()
  • 对于形状不同的张量运算,可以调用广播机制来执行按元素操作
a = torch.arange(3).reshape((3,1))
b = torch.arange(2).reshape((1,2))
#按行复制,按列复制,再进行加和运算 
a + b
  • 运行一些操作可能会导致为新结果分配内存,导致内存占用过多,可以通过执行原地操作来避免
#生成一个z和y由相同的构造,且值为0
z = torch.zeros_like(y)
#对z所有的元素改写成x+y
z[:] = x+y
#也可以通过x+=y来实现
  • 转换为Numpy张量
a = x.numpy()
b = torch.tensor(a)
  • 将大小为1的张量转换为python标量
a = torch.tensor([3,2])
a.item(), float(a), int(a)
  • 创建人工数据集的方法
import os
os.makedirs(os.path.join('..','data'),exist_ok=True)
data_file = os.path.join('..','data','house_tiny.csv')
with open(data_file,'w') as f:
   f.write('NumRooms,Alley,Price\n')
#读取文件
data = pd.read_csv(data_file)
  • 处理数据
inputs, outputs = data.iloc[:,0:2], data.iloc[:,2]
#NaN设置成列的均值填入
inputs = inputs.fillna(inputs.mean())
#将NaN列拆开分别成0/1
inputs = pd.get_dummies(inputs,dummy_na=True) 
  • 将inputs和outputs中的所有条目转换成张量
x,y = torch.tensor(inputs.values),torch.tensor(outputs.values)
  • 通过分配新内存,将a的一个副本分配给b
b = a.clone()
  • 将维度为1的汇总加和
a_sum_axis0 = a.sum(axis=0)
  • 求均值
a.mean()
a.sum()/a.numel()
  • 计算总和或均值时保持轴数(维度)不变
sum_a = a.sum(axis=1,keepdims=True)
  • 某个轴计算a元素的累积求和
a.cumsum(axis=0)
  • 点积是相同位置的按元素乘积的和——标量
y = torch.ones(4,dtype=torch.float32)
x,y,torch.dot(x,y)
#等价于
torch.sum(x*y)
  • 矩阵向量积
a.shape,x.shape,torch.mv(a,x)
  • 矩阵-矩阵的向量积
torch.mm(a,b)
  • L2范数是向量元素平方和的平方根
u = torch.tensor([3.0,-4.0])
torch.norm(u)
  • L1范数,表示向量元素的绝对值求和
torch.abs(u).sum()
  • 矩阵的Frobenius norm是矩阵元素的平方和的平方根
torch.norm(torch.ones((4,9)))
  • 存储梯度
x = torch.arange(4.0,requires_grad=True)
x.grad #默认是None
  • 计算y
y = 2*torch.dot(x,x)
  • 通过调用反向传播函数来自动计算y关于x每个分量的梯度
y.backward() #求导
x.grad #访问导数
  • 在默认情况下,pytorch会累积梯度,所以需要清除之前的值
x.grad.zero_()
#求向量的sum梯度是全1,也就是y=x1+x2+x3对其求偏导
y = x.sum()
y.backward()
x.grad
  • detach表示将变量变成标量
x.grad.zero_()
y = x*x
u = y.detach() #表示脱离掉
z = u*x
z.sum().backward()
x.grad == u
  • 矩阵x向量
torch.matmul(x,w)
  • 矩阵按照某个轴求和
X = torch.tensor([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
X.sum(0, keepdim=True), X.sum(1, keepdim=True)
  • 创建一个数据y_hat,其中包含2个样本在3个类别的预测概率,使用y作为y_hat中概率的索引
y = torch.tensor([0, 2])
y_hat = torch.tensor([[0.1, 0.3, 0.6], [0.3, 0.2, 0.5]])
#表示拿到0.1和0.5
y_hat[[0, 1], y]

标签:学习,tensor,inputs,sum,torch,张量,语法,深度,data
From: https://www.cnblogs.com/jinbb/p/17591396.html

相关文章

  • python数据分析师入门-学习笔记(第八节 python爬虫的准备工作)
    学习链接:Python数据分析师入门python爬虫的准备工作一台电脑尽量windows电脑语言环境编程语言爬虫并不是python独有Python开发环境Anaconda了解爬虫的实现和原理用代码去控制终端用代码直接发送请求CS(客户端服务器)/BS(浏览器服务器)模型CS/BS浏览......
  • ZROI 学习笔记之数学相关
    都别催!!!等我有时间了例题和详细讲解都会补回来的!!!7.29数论基础你不会不知道吧首先,你要知道\[a\equivb\pmodp\]是什么意思。然后,\[\dfrac{a}{d}\equiv\dfrac{b}{d}\pmod\dfrac{p}{d}\]也是成立的。扩展欧几里得-ExGCD裴蜀定理:\(\foralla,b\in\mathbf{Z},\......
  • React(五):jsx语法
    1.jsx语法<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>jsx语法</title><scriptsrc="https://unpkg.com/react@18/umd/react.development.js"></script><script......
  • 基于Alexnet深度学习神经网络的人脸识别算法matlab仿真
    1.算法理论概述       人脸识别是计算机视觉领域中一个重要的研究方向,其目的是识别不同人的面部特征以实现自动身份识别。随着深度学习神经网络的发展,基于深度学习神经网络的人脸识别算法已经成为了当前最先进的人脸识别技术之一。本文将详细介绍基于AlexNet深度学习神经......
  • HTML入门学习
    前言HTML5是HTML规范的最新版本,是一系列用来制作现代web内容技术的总称。其中最重要的三项技术是HTML5核心规范、CSS、Javascript。本文章将从HTML基础入手。一、HTML是什么?HTML(HyperTextMarkupLanguage,超文本标记语言)是用来描述网页的一种语言,它不是一种编程语言,而是一种标记......
  • python数据分析师入门-学习笔记(第七节 爬虫如何搞钱)
    学习链接:Python数据分析师入门爬虫如何搞钱入职企业,找一份爬虫工程师的岗位抢购最火的茅台电商平台秒杀羊毛出自猪身上看小说(投放广告)引流比价购物助手点赞、收藏、刷粉丝、刷评论、刷播放量核心资源的整合......
  • python数据分析师入门-学习笔记(第六节 爬虫合法吗)
    学习链接:Python数据分析师入门爬虫合法吗机器人协议robots.txt协议中规定了哪些内容可以获取,哪些内容不能获取通常协议中会标明哪些不让爬baidu.com/robots.txttaobao.com/robots.txt君子协议未标注是否可以爬取历史上哪些工程师被抓有一家公司被一锅端工程......
  • python数据分析师入门-学习笔记(第五节 爬虫分类)
    学习链接:Python数据分析师入门爬虫分类1.聚焦爬虫-完成某一项特定数据的采集-百分之九十的爬虫2.通用爬虫-什么内容都采集,存储下来-搜索引擎3.增量爬虫-既可以使用聚焦爬虫,也可以使用通用爬虫-当内容变化时,可以爬取变化的内容4.暗网爬虫-深网爬......
  • python数据分析师入门-学习笔记(第四节 爬虫的应用场景)
    学习链接:Python数据分析师入门实际应用企业中: 竞品调研数据采集 办公自动化个人: 比如看小说 有的网站收费 有的网站不收费,但是有广告 目标:不看广告不交钱 广告屏蔽插件 爬下来 比如说抢票、抢茅台、抢票.........
  • python数据分析师入门-学习笔记(第三节)
    学习链接:python数据分析师入门爬虫到底是什么概括爬虫是批量化自动获取既有数据 批量化 自动 既有数据通常 获取既有数据特殊 批量注册一批账号 批量去领取优惠券 批量自动下单购物 自动做任务(签到)......