1. 创建张量
a = torch.tensor([1.5, 3.5]) | 创建张量 |
a = torch.normal( mean=torch.tensor([[1.0, 2.0], [3.0, 4.0]]), std=torch.tensor([[0.1, 0.2], [0.3, 0.4]])) | 生成服从正态分布的张量,std必须为tensor,二者形状均能决定生成张量的形状 mean与std的类型必须为浮点数 |
a = torch.rand(3, 4) | 随机生成【0.1】上均匀分布的张量 |
a = torch.randn(3, 4) | 随机生成维数为(3,4)的正态分布张量 |
- | |
b = torch.zeros_like(a) | 生成与a形状,类型相同的张量 |
b = torch.ones_like(a) | |
b = torch.rand_like(a) | |
b = torch.randn_like(a) | |
a = torch.rand(3, 4) | 与a形状类型相同 正态分布的张量 |
- | |
f = a.new_tensor(e) | f与e的值与形状相同,类型与a相同 |
f = a.new_full((3, 3), fill_value=1) | 3*3全1填充,类型与a相同 |
f = a.new_zeros((3, 3)) | |
f = a.new_ones((3, 3)) | |
f = a.new_empty((3.3)) | 3*3空张量,类型与a相同 |
2. 张量相关操作
-数组,张量转化 | |
a=torch.as_tensor(b) a=torch.form_numpy(b) | 从numpy转化为tensor |
a=b.numpy() | 从tensor转化为numpy |
- | |
-查看张量信息 | |
a.shape | 查看形状 |
a.size() | 查看维度 |
a.numel() | 查看元素的总个数 |
a.dtype | 查看元素的类型 |
a.int() a.long() a.float() a.double() | 更改张量元素的类型 |
- | |
-基本操作 | |
a.reshape(3,4) | 改变形状 |
a.resize(3,4) | resize不仅可以改变形状 还可以改变数据 如原本有8个元素的张量,可以resize(2,3) 但不可以reshape(2,3) |
a.resize_as(b) | 把a resize成b的形状 |
a.unsqueeze() | 博客 |
a.squeeze() | 博客 |
a.expand_as(c) | 博客 |
a.expand() | 博客 |
a.repeat | 将张量看作一个整体,根据指定的形状扩充 |
a.tril(diagonal=0/1) | 保留张量的下三角部分,其余换成0 digonal=0则不保留对角线,否则保留 |
a.trilu(diagonal=0/1) | 保留张量的上三角部分,其他替换成0 |
a.diag(diagonal=...) | 提取张量对角线生成1维张量 diagonal=... 表示偏移量 |
torch.cat(a,b,dim=...) | 拼接张量,dim表示拼接的维度 |
d1,d2...dn=torch.chunk(a,n,dim=...) | 将张量的第...个维度,平均切分成n份 |
d1,d2...dn=torch.split(a,[m,n],dim=...) | 将张量的第...个维度,分成指定的份数 第一份m个,第二份n个... |
- | |
-判断元素相关关系 | |
torch.allclose(a,b,rtol=...,atol=...) | 比较两个元素是否接近 |
torch.eq() | 逐元素比较是否相等 |
torch.equal() | 判断两个张量是否具有相同的形状和元素 |
torch.ge() | 逐元素比较大于等于 |
torch.gt() | 逐元素比较大于 |
torch.le() | 逐元素比较小于等于 |
torch.lt() | 逐元素比较小于 |
torch.ne() | 逐元素比较不等于 |
torch.isnan() | 判断是否为缺失值 |
- | |
-张量运算 | |
a+b a-b a*b a/b | 逐个元素加减乘数 |
torch.pow(a,...) | 逐个元素乘方 |
torch.sqrt() | 逐个元素平方根 |
torch.rsqrt() | 逐个元素平方根的倒数 |
torch.log() | 逐个元素计算对数 |
torch.clamp_max(a,max) | 保留大于等于max 的元素,其他替换为0 |
torch.clamp_min(a,min) | 保留小于等于min的元素,其他替换为0 |
torch.clamp(a,min,max) | 保留介于二者之间的元素,其他替换为0 |
troch.t(a) | 张量转置 |
troch.matmul(a,b) | 张量的矩阵乘法 |
torch.inverse(a) | 张量取逆(逆矩阵) |
torch.trace() | 计算张量的迹(对角线元素和) |
torch.max(a,dim=...) | dim为...中最大的元素 |
torch.min (a,dim=...) | 最小的元素 |
torch.argmax(a,dim=...) | 最大元素所在位置 |
torch.argmin (a,dim=...) | 最小元素所在位置 |
torch.sort(a,dim=...,descending=T/F) | 张量dim=...维度排序 |
value,indices=torch.topk(a,k) | 提取张量中前k大的元素,输出值和索引 |
value,indices=torch.kthvalue(a,k) | 提取张量中第k大的元素 |
torch.mean(a,dim=...,keepdim=Ture) | 对某一个维度取平均值 |
torch.sum(a,dim=...,keepdim=Ture) | 对张量中的某个维度取和 |
torch.median(a,dim=...,keepdim=Ture) | 对张量中的某个维度提取中位数 |
torch.std(a,dim=...,keepdim=Ture) | 计算张量某个维度的标准差 |
3. 张量相关操作
-卷积层操作 | |
torch.nn.Conv1d() | 针对输人信号上应用 1D 卷积 |
torch.nn.Conv2d() | 针对输人信号上应用 2D 卷积 |
torch.nn.Conv3d() | 针对输人信号上应用3D卷积 |
torch.nn.ConvTranspose1d() | 在输人信号上应用1D转置卷积 |
torch.nn.ConvTranspose2d() | 在输人信号上应用2D 转置卷积 |
torch.nn.ConvTranspose3d() | 在输人信号上应用 3D转置卷积 |
- | |
-池化层操作 | |
torch.nn.MaxPool1d() | 针对输人信号上应用 1D最大值池化 |
torch.nn.MaxPool2d() | 针对输人信号上应用 2D 最大值池化 |
torch.nn.MaxPool3d() | 针对输人信号上应用 3D 最大值池化 |
torch.nn.MaxUnPool1d() | 1D 最大值池化的部分逆运算 |
torch.nn.Max UnPool2d() | 2D 最大值池化的部分逆运算 |
torch.nn.MaxUnPool3d() | 3D 最大值池化的部分逆运算 |
torch.nn.AvgPool1d() | 针对输人信号上应用 1D 平均值池化 |
torch.nn.AvgPool2d() | 针对输人信号上应用2D 平均值池化 |
torch.nn.AvgPool3d() | 针对输人信号上应用 3D平均值池化 |
torch.nn.AdaptiveMaxPool1d() | 针对输人信号应用 1D 自适应最大值池化 |
torch.nn.AdaptiveMaxPool2d() | 针对输人信号应用 2D 自适应最大值池化 |
torch.nn.AdaptiveMaxPool3d() | 针对输入信号应用3D 自适应最大值池化 |
torch.nn.AdaptiveAvgPool1d() | 针对输人信号应用 1D 自适应平均值池化 |
torch.nn.AdaptiveAvgPool2d() | 针对输人信号应用 2D 自适应平均值池化 |
torch.nn.AdaptiveAvgPool3d() | 针对输人信号应用 3D 自适应平均值池化 |
- | |
-激活函数 | |
torch.nn.Sigmoid | Sigmoid 激活函数 |
torch.nn.Tanh | Tanh 激活函数 |
torch.nn.ReLU | ReLU 激活函数 |
torch.nn.Softplus | ReLU 激活函数的平滑近似 |
- | |
-全连接层 | |
nn.Linear() | 全连接层函数 |
用法示例:
cov2d=torch.nn.Conv2d(
in_channels=(整数)输人图像的通道数。
out_channels=(整数)经过卷积运算后,输出;特征映射的数量。
kernel_size=(整数或者数组)卷积核的大小。
stride=(整数或者数组,正数)卷积的步长,默认为1。
padding=(整数或 者数组,正数)在输人两边进行0填充的数量,默认为0。
dilation=(整数或者数组,正数)卷积核元素之间的步幅,该参数可调整空洞卷
积的空洞大小,默认为1。
groups=(整数,正数)从输人通道到输出通道的阻塞连接数。
bias=(布尔值,正数)如果bias=True,则添加偏置,默认为True。
)
maxpool2d=torch.nn.MaxPool2d(
kerel_size=(整数或数组)最大值池化的窗口大小。
stride=(整数或数组,正数)最大值池化窗口移动的步长,默认值是kernel size。
padding=(整数或数组,正数)输人的每一条边补充0的层数。
dilation=(整数或数组,正数)一个控制窗口中元素步幅的参数。
return_indices=如果为True,则会返回输出最大值的索引,这样会更加便于之后的torch.nn.MaxUnpool2d操作。
ceil_mode=如果等于Trae,计算输出信号大小的时候,会使用向上取整,默认是向下取整。
)
linear=torch.nn.Linear(
in_features=每个输人样本的特征数量。
out_features=每个输出样本的特征数量。
bias=若设置为False,则该层不会学习偏置。默认值为True
)