04 数据操作 + 数据预处理【动手学深度学习v2】
z=torch.zeros_like(Y)
(1)这里zeros_like是用于创建一个与输入张量 Y
形状相同且所有元素都为0的新张量。
(2)X = X + Y是整个矩阵的操作,所以重新分配内存;X[:],和X+=,都是给X中的元素进行赋值操作,对X矩阵是没有更改的
(3)利用get_dummies(inputs,dummy_na=True)将函数的非数值空值转换为0、1的形式。
(4)reshape不改变地址,b=a.reshape(3,4),如果b发生改变,a也跟着变
05 线性代数【动手学深度学习v2】
(5)torch.dot(x,y):向量的点积。
(6)torch.mv(x,y):矩阵向量积,一个长度为m的列向量。
几种常见的范数:
(7)torch.ones ()
是 PyTorch 中的一个函数,用于创建一个所有元素都填充为 1 的张量(Tensor)。该函数的主要参数包括:
size
:定义输出张量形状的整数序列。可以是可变数量的参数或像列表或元组这样的集合。out
:可选,指定输出张量。dtype
:可选,指定返回张量的数据类型。如果为 None,则使用默认数据类型。layout
:可选,指定张量的布局,默认为torch.strided
。device
:可选,指定张量所在的设备,默认为 CPU。requires_grad
:可选,布尔值,表示是否需要对张量进行梯度计算,默认为 False。
import torch
# 创建一个2行3列的全1张量
a = torch.ones (2, 3)
print(a)
python中按照特定轴求和
按行求和(axis=1)
result = np.sum (arr, axis=1)
print(result) # 输出: [6 15 24]
按列求和(axis=0)
result = np.sum (arr, axis=0)
print(result) # 输出: [12 15 18]
06 矩阵计算【动手学深度学习v2】
(1) 标量关于列向量的导数是一个行向量。
(2) 列向量关于标量的导数,仍然为列向量。
(3)列向量关于列向量的导数为一个矩阵。
ps:帮助理解(摘自评论区):
- 标量求导就不说了,高中常识;
- y是标量,x是向量的情况。实际上就是y=f(x1,x2,...,xn)的意思。拿y=f(x1,x2)为例解释,有一个三维坐标轴体系,水平面的横轴和竖轴分别是x1、x2,立面上的轴是y,水平面上任意一个点(x1,x2)都对应y轴上的一个点,很明显这就是一个面,因此他的导数是一个向量,所以结果是横着写的。
- y是向量,x是标量的情况。这实际上就是【y1,y2,...,yn】=【f(x1),f(x2),...,f(xn)】,对x求导就是求出y=yi时那一个点上的斜率,是标量,所以结果是竖着写的。
- y、x都是向量的情况。根据上面描述,求导实际上就是求出了y=yi时,那一个平面形状边缘上的向量,因此是横着写的。