第一周作业:深度学习基础

一、环境配置
在windows上安装Miniconda+Pycharm+pytorch
参考博客:
https://blog.csdn.net/LLM1602/article/details/105280652
https://blog.csdn.net/suh666888/article/details/107621766
https://blog.csdn.net/m0_37908464/article/details/105832448
二、数据操作
入门
导入torch
在这里插入图片描述
使用arange创建一个行向量x,这个行向量包含从0开始的前12个整数,它们被默认创建为浮点数
在这里插入图片描述
通过张量的shape属性来访问张量的形状
在这里插入图片描述
若只想知道张量中元素的总数
在这里插入图片描述
要改变一个张量的形状而不改变元素数量和元素值,可以调用reshape函数
在这里插入图片描述
若使用全0、全1、其他常量或者从特定分布中随机采样的数字来初始化矩阵
在这里插入图片描述
若想通过从某个特定的概率分布中随机采样来得到张量中每个元素的值(以下代码创建一个形状为(3,4)的张量。其中的每个元素都从均值为0、标准差为1的标准高斯(正态)分布中随机采样)
在这里插入图片描述
通过提供包含数值的Python列表(或嵌套列表)来为所需张量中的每个元素赋予确定值
在这里插入图片描述
运算
在这里插入图片描述
在这里插入图片描述
把多个张量连结(concatenate)在一起,把它们端对端地叠起来形成一个更大的张量,只需要提供张量列表,并给出沿哪个轴连结(dim=0为按行连结,dim=1为按列连结)
在这里插入图片描述
逻辑语句判断张量对应项是否相同
在这里插入图片描述
对张量所有元素求和,得只有一个元素的张量
在这里插入图片描述
广播机制
在这里插入图片描述
矩阵a将复制列,矩阵b将复制行,然后再按元素相加
在这里插入图片描述
索引和切片
在这里插入图片描述
节省内存
Python首先计算Y + X,为结果分配新的内存,然后使Y指向内存中的这个新位置,导致结果False
在这里插入图片描述
原地操作
在这里插入图片描述
如果在后续计算中没有重复使用X,我们也可以使用X[:] = X + Y或X += Y来减少操作的内存开销
在这里插入图片描述
转换为其他 Python 对象
在这里插入图片描述
将大小为1的张量转换为Python标量,可以调用item函数或Python的内置函数
在这里插入图片描述
三、数据预处理
读取数据集
将数据集按行写入CSV文件中
在这里插入图片描述
导入pandas包并调用read_csv函数,从csv文件中加载数据集
在这里插入图片描述
处理缺失值
通过位置索引iloc,将data分成inputs和outputs,其中前者为data前两列,后者为data后一列。对于inputs中的缺失值,用同一列的均值替换“NaN”项。
在这里插入图片描述
由于Alley列只接受两种类型的类别值“Pave”和“NaN”,pandas可以自动将此列转换为两列“Alley_Pave”和“Alley_nan”,并用0、1标识。
在这里插入图片描述
转换为张量格式
在这里插入图片描述
四、线性代数
标量
实例化两个标量,并使用它们执行一些熟悉的算术运算,即加法、乘法、除法和指数。
在这里插入图片描述
向量
一维张量
在这里插入图片描述
通过张量的索引来访问任一元素
在这里插入图片描述
长度、维度和形状
在这里插入图片描述
矩阵
矩阵与矩阵转置(注:由于torch版本问题,此处计算转置使用A.t())
在这里插入图片描述
对称矩阵的转置与其本身相等
在这里插入图片描述
张量
张量是描述具有任意数量轴的 n 维数组的通用方法。
在这里插入图片描述
张量算法的基本性质
将两个相同形状的矩阵相加会在这两个矩阵上执行元素加法。
在这里插入图片描述
两个矩阵的按元素乘法称为哈达玛积。
在这里插入图片描述
将张量乘以或加上一个标量不会改变张量的形状,其中张量的每个元素都将与标量相加或相乘。
在这里插入图片描述
降维
默认情况下,调用求和函数会沿所有的轴降低张量的维度,使它变为一个标量。
在这里插入图片描述
指定dim=1(0)将通过汇总所有列(行)的元素降维。(注:由于torch版本问题,此处轴替换axis使用dim表示)
在这里插入图片描述
沿着行和列对矩阵求和,等价于对矩阵的所有元素进行求和。
在这里插入图片描述
将总和除以元素总数来计算平均值,计算平均值的函数也可以沿指定轴降低张量的维度。
在这里插入图片描述
非降维求和
在调用函数来计算总和或均值时保持轴数不变
在这里插入图片描述
调用cumsum函数,求沿某个轴计算A元素的累积总和。
在这里插入图片描述
点积
给定两个向量x,y∈Rᵈ,它们的点积xT~y(或<x,y>)是相同位置的按元素乘积的和:在这里插入图片描述
在这里插入图片描述
可以通过执行按元素乘法,然后进行求和来表示两个向量的点积
在这里插入图片描述
矩阵-向量积
当我们为矩阵A和向量x调用np.dot(A,x)时,会执行矩阵-向量积。注意,A的列维数(沿轴1的长度)必须与x的维数(其长度)相同。
在这里插入图片描述
矩阵-矩阵乘法
我们可以将矩阵-矩阵乘法 AB 看作是简单地执行 m 次矩阵-向量积,并将结果拼接在一起,形成一个 n×m 矩阵。
在这里插入图片描述
范数
L1 范数和 L2 范数都是更一般的 Lp范数的特例:
在这里插入图片描述

L2 范数:假设 n 维向量 x 中的元素是 x1,…,x n,其 L2 范数是向量元素平方和的平方根:
在这里插入图片描述
在这里插入图片描述
L1范数:与 L2 范数相比受异常值的影响较小,它表示为向量元素的绝对值之和:
在这里插入图片描述
在这里插入图片描述
类似于向量的 L2 范数,矩阵 X∈Rm×n 的弗罗贝尼乌斯范数(Frobenius norm)是矩阵元素平方和的平方根:
在这里插入图片描述
五、矩阵计算
标量导数
在这里插入图片描述
亚导数
在这里插入图片描述
在这里插入图片描述
梯度
在这里插入图片描述
y是标量,x是列向量,y对x求导后结果为行向量。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
y是列向量,x是标量,y对x求导后结果为列向量。
在这里插入图片描述
y是列向量,x是列向量,y对x求导后结果为矩阵。
在这里插入图片描述
样例
在这里插入图片描述
在这里插入图片描述
六、自动求导
链式求导
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自动求导
计算一个函数在指定值上的导数,与符号求导和数值求导不同。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自动求导实现
在我们计算 y 关于 x 的梯度之前,我们需要一个地方来存储梯度(x.grad)。
在这里插入图片描述
计算y(隐式构造计算图,有grad_fn函数保存在此处)
在这里插入图片描述
通过调用反向传播函数来自动计算y关于x每个分量的梯度,打印这些梯度;并验证计算正确性。
在这里插入图片描述
求另一个函数的梯度之前用zero_()清零。
在这里插入图片描述
非标量变量的反向传播
深度学习中,我们的目的不是计算微分矩阵,而是批量中每个样本单独计算的偏导数之和。
在这里插入图片描述
分离计算
将某些计算移动到记录的计算图之外
下面的反向传播函数计算z=ux关于x的偏导数,同时将u作为常数处理,而不是z=xxx关于x的偏导数。
detach():阻断反向传播,u不再是关于x的函数,而是常数,值为x
x。
在这里插入图片描述

Python控制流的梯度计算
构建函数的计算图需要通过Python控制流(例如,条件、循环或任意函数调用),我们仍然可以计算得到的变量的梯度。
在这里插入图片描述
问题
矩阵计算中,在标量对向量、向量对标量、向量对向量求梯度的问题上,仍需要多揣摩多计算。
自动求导中,分离计算中detach()函数的作用起初没有理解,搜索后明白了,但对其使用场景仍无概念,需要进一步学习。

感想
深度学习第一周,安装环境,学习基础数据操作、数据预处理、线性代数自动求导等数学知识。在安装环境上就遇到不少困难,包括对虚拟环境、指令的不熟悉等等,很感谢网络上丰富的资源帮助我解决每一个问题;学习部分,李沐老师视频课程讲解很精炼细致,每一句都不容错过,结合代码体会每一个函数、每一次操作的用意,对于加深理解大有裨益。今后要养成整理笔记的习惯,通篇整理下来,对前几天的学习内容有了更系统的感知,对于一些细节问题也好查漏补缺。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值