首页 > 其他分享 >limu|P1-7|安装、预备知识

limu|P1-7|安装、预备知识

时间:2024-08-05 23:19:50浏览次数:13  
标签:P1 Tensor 预备 torch 矩阵 limu 维度 范数 向量

安装
建议参考小土堆Pytorch教程的第一课,然后需要1-下载所有Jupiter Notebook的文件并解压;2-pip install d2l相当于一次性把课程需要用到的包都install,但是这么下亲测很慢,不如到时候用到的时候发现没装,再install

预备知识
仅说几个我觉得有意思的概念(全文字,一点点代码,懒得写公式),具体torch代码需要用的时候再查or问chatgpt
(一)数据操作
1、Pytorch和Tensorflow中的Tensor张量和Numpy的ndarray = n dim array有何区别?
其实都是n维数组,但Tensor是有对应数学概念的,ndarray纯计算机概念
深度学习喜欢用Tensor是因为(1)Tensor支持GPU加速计算,而ndarray仅支持CPU计算。(2)Tensor支持自动微分
2、Tensor作为n维数组
若只有1个值——标量scalar
若n=1——向量vector
若n=2——矩阵matrix
若n≥2——没别的名字的都叫张量tensor
如:
n=3——一张3通道图像(Channel, Height, Width)
n=4——一个batch的3通道图像(batch_size, C, H, W)
n=5——视频,加了时间轴
3、广播机制
两个张量按元素进行运算操作时,即使形状不同,也可以通过适当复制元素以扩展,使得两个张量具有相同的形状,从而可以进行按元素操作【有的时候的出错点。。】
(二)数据预处理
1、读取数据集
比较简单pd.read.csv,注意用此读取csv文件时默认第一行为列名。如果没有列名,设置参数header=None
真的实战的时候还是得用Dataset类+Dataloader读取自己的数据集,详见:
Dataset类:https://www.cnblogs.com/xjl-ultrasound/p/18337058
Dataloader:https://www.cnblogs.com/xjl-ultrasound/p/18339035
2、处理缺失值NaN
比较常用的是 插值(补!)
(1)用均值补inputs = inputs.fillna(input.mean())
(2)如果input中是离散值,如类别,可将NaN自动视为一类。inputs = pd.get_dummies(inputs, dummy_na=True)。意思是,在不忽视NaN这一类dummy_na=True的情况下,进行one-hot encoding
(三)线性代数
1、怎么看n维数组,以及降维求和/均值
怎么看Tensor是几维?数开头或结尾的中括号数量
如何理解降维?比如A.sum(axis=1)。相当于按照这个方向压缩(sum求和各元素)张量,最后得到的tensor维度会缺掉这个维度的数字。
但很多时候,为了便于后续计算,需要非降维求和。可设置参数keepdims=True;或者换函数A.cumsum(axis=1)
2、各种乘!
(1)基本上用不到的是哈达玛积,按元素乘
(2)常用的是:
两向量的点积:得到一个标量,是两个向量的相同位置元素乘积之和torch.dot(x, y)
矩阵-向量积:要求矩阵m*n维,向量n维,相乘,得到一个m维向量torch.mv(A, x)。其实是在变换向量的维度。新向量的各个值是老向量所有值的加权和(权重由矩阵决定)。“线性层,全连接层”做的事情
矩阵-矩阵乘法torch.mm(A, B)
3、范数norm
(1)向量的范数:表示一个向量的大小size,但不涉及维度。也就是把一个向量 映射到 标量 的函数
常用的是
L2范数:向量各元素平方和的开根号(模),torch.norm(x)
L1范数:向量各元素绝对值之和,torch.abs(x).sum()
更一般的是Lp范数:\(\|x\|_{p} = (\sum^{n}_{i=1}|x_i|^p)^{1/p}\)
(2)矩阵的范数
Frobenius范数 可视为 矩阵形向量的L2范数,torch.norm(A)
各种“距离”相关的概念,很常用!
(四)微积分
1、torch里都是自动求,但要知道input和output的维度
标量、向量、矩阵互相微分时,input和output的维度见下图

*被李老师的头挡住的维度为(m,l,k,n)
这里可以看出的是,如果在分母上,size会倒一倒,然后和分母的size连一连(消掉紧邻的一样的维度),就变成了output的维度。更多的我也不会了。。。
2、梯度:值变化最大的方向

标签:P1,Tensor,预备,torch,矩阵,limu,维度,范数,向量
From: https://www.cnblogs.com/xjl-ultrasound/p/18344166

相关文章

  • 洛谷题单指南-前缀和差分与离散化-P1904 天际线
    原题链接:https://www.luogu.com.cn/problem/P1904题意解读:给出(左端点,高度,右端点)表示的若干建筑,要输出其轮廓,所谓轮廓就是每个点被覆盖的最高建筑的高度所描绘的线。解题思路:如果能计算每个点被覆盖的最高建筑的高度,用数组h[10005]保存,那么输出轮廓的过程只需要枚举每一个点,如......
  • P1447 [NOI2010] 能量采集
    题目传送容斥思想的一道好题。题目容易转化为:\[2\times\sum_{i=1}^n\sum_{j=1}^n(\gcd(i,j))\-nm.\]直接求和不好求,不妨转换为枚举\(d=\gcd(i,j)\)。那么\(i,j\)应该均为\(d\)的倍数。记\(f(i)=\left\lfloor\frac{n}{i}\right\rfloor\cdot\left\lfloor......
  • 洛谷P1223 排队接水
    P1223排队接水题目描述有\(n\)个人在一个水龙头前排队接水,假如每个人接水的时间为\(T_i\),请编程找出这\(n\)个人排队的一种顺序,使得\(n\)个人的平均等待时间最小。输入格式第一行为一个整数\(n\)。第二行\(n\)个整数,第\(i\)个整数\(T_i\)表示第\(i\)个人的......
  • Parallels Desktop19.3.0虚拟机软件可以让你在Mac上同时运行Windows、Linux等多个系统
    ParallelsDesktop19,一个虚拟机软件,可以让你在Mac上同时运行Windows、Linux等多个系统。听起来是不是很厉害?但其实它还有更多隐藏的小技巧等着你去发现。如果你还在因为Mac和Windows之间的不兼容而苦恼,那么ParallelsDesktop19就是你的救星。它可以帮助你轻松地在Mac上运行Win......
  • Parallels Desktop19Mac就是这样一个神器!在Windows和Mac之间反复切换横跳!
    在Windows和Mac之间反复横跳,是很多职场人的常态。Windows系统生态完善,软件丰富;而Mac的优雅设计、出色的性能以及稳定的系统体验也让人难以舍弃。但鱼与熊掌不可得兼,两个系统来回切换,需要准备两台电脑,既麻烦又占用空间,还增加了经济负担。如果一台电脑可以同时运行两个操作系......
  • 洛谷P1001 A+B Problem的一些歪解(淼作)
    一、LCT#include<iostream>#include<cstring>#include<cstdio>#include<cstring>usingnamespacestd;structnode{intdata,rev,sum;node*son[2],*pre;booljudge();boolisroot();voidpushdown();voidupda......
  • 洛谷-P10837 『FLA - I』云音泛
    Abstract传送门这题是线段树+离散化的典型例子。Idea题目要求我们求出在至多只改变一朵花种植时间的情况下,最多有多长的时间是有且只有一朵花开放的。种花可以视为给起始时间到中止时间的区间+1,挖走一朵花,只用在原来的起始时间到中止时间的区间-1,即可,自然的想到用线段树去......
  • 打卡信奥刷题(506)用Scratch图形化工具信奥P1614[普及组/提高组] 爱与愁的心痛
    爱与愁的心痛题目背景(本道题目隐藏了两首歌名,找找看哪~~~)《爱与愁的故事第一弹·heartache》第一章。《我为歌狂》当中伍思凯神曲《舞月光》居然没赢给萨顶顶,爱与愁大神心痛啊~~~而且最近还有一些令人伤心的事情,都让人心痛(最近真的很烦哈)……题目描述最近有......
  • 洛谷P10839 【MX-J2-T0】Turtle and Equations题解
    灰常简单!蒟蒻带您写代码!题目理解题目传送门题目描述给你四个正整数。现在你有一条算式。你需要判断能否在两个方框内分别填入三种运算符 之一(运算符可以重复使用),使得算式运算的结果等于。题目分析分析后我们能够发现,只要一一列举出所有能够输出的情况,剩下的输出即可......
  • P10837 『FLA - I』云音泛
    原题链接题解修改玫瑰\(i\),对答案的影响是:减去只有玫瑰\(i\)的区间,加上只有玫瑰\(i\)和另一个玫瑰的区间,加上m因此我们对每个玫瑰\(i\),维护上述两个区间长度由于每个玫瑰开花时间一样,所以我们可以用扫描线的思想,对所有区间的端点离散化排序,然后升序遍历,由于开花时间......