Pytorch学习笔记(十):Torch对张量的计算、Numpy对数组的计算、它们之间的转换

简介: 这篇文章是关于PyTorch张量和Numpy数组的计算方法及其相互转换的详细学习笔记。

Torch对张量的计算

#pytorch张量
import torch
'''张量定义'''
a=torch.FloatTensor(2,3)#定义一个两行三列的张量
b=torch.FloatTensor([2,3,4,5])#定义一个四行一列的张量,并给每个数字赋值
c=torch.rand(2,3)#定义一个两行三列的张量,并以0~1之间的随机数填充
d=torch.randn(2,3)#定义一个两行三列的张量,并以均值为0,且方差为1的正态分布随机数填充
e=torch.arange(1,20,1)#定义从起始值(参数一),到结束值(参数二),以步长(参数三)为间隔的单列多行张量
f=torch.zeros(2,3)#定义一个两行三列的张量,初始化为0,效果同a
'''张量计算'''
g=torch.abs(d)#返回张量绝对值
g=torch.add(g,d)#两同维度张量值对应相加
g=torch.add(g,10)#张量值全部加10
#另外div为除法,mul为乘法,用法皆同加法
g=torch.clamp(g,-0.1,0.1)#张量裁剪,第二个参数和第三个参数分别为上下边界
g=torch.pow(g,2)#求幂,第二个参数为幂数
'''矩阵乘法'''
a=torch.randn(2,3)
b=torch.randn(3,2)
c=torch.mm(a,b)

Numpy对数组的计算

#numpy
import numpy as np
'''numpy定义'''
a=np.array([2,3,4]) #创造秩为1,内容为2,3,4的数组
b=np.array([(2,3,4), (4,5,6)]) #创造秩为2的数组,也就是二维数组
c=np.array([[2,3,4], [4,5,6]]) #同上,只是写法不一样
d=np.array([[2,3,4], [4,5,6]],dtype=complex) #显式指明数据类型
e=np.zeros((3,4))#创造一个3行4列的矩阵,并初始化为0,数据类型默认为float64,可自定义:dtype=np.int32
f=np.ones((3,4))#创造一个3行4列的矩阵,并初始化为1
g=np.empty((3,4))#创造一个3行4列的矩阵,未初始化,为随机值
h=np.arange(5)#定义从0开始,步长为1的秩为1的5个数的数组
i=np.arange(10,30,5)#定义从起始值(参数一),到结束值(参数二),以步长(参数三)为间隔的秩为1的数组
j=np.linspace(0,2,9)#定义从0到2(包括两者)间的秩为1的9个数的数组
'''numpy计算'''
k=e-f#减法计算,按位相减
l=h**2#平方运算,按位求平方
n=np.sin(l)#三角函数运算,按位求三角函数
m=h<3#比较逻辑运算,按位比较,满足为真,不满足为假
o=b*c#乘法运算,按位相乘
p=np.transpose(c)#矩阵转置
q=b.dot(p)#矩阵相乘
r=h.sum()#数组全体数求和
s=h.min()#取数组中的最小值
t=h.max()#取数组中的最大值
'''numpy索引'''
u=np.arange(10)**3
print(u[2])#索引数组的第二项
print(u[2:5])#索引数组第二到五项
u[0:6:2]=-100#从开始位置到索引为6的元素为止,每隔一个元素将其赋值为-100(第一个参数可以不写,则默认为0)
v=u[::-1]#反转u
'''遍历数组'''
for i in u:
    print(i)
'''用函数创建数组'''
def f(x,y):
    return 10*x+y
w=np.fromfunction(f,(5,4),dtype=int)
print(w[2,3])#二维数组数值索引
print(w[0:5,1])#二维数组0~4行第二个元素索引
print(w[:,1])#二维数组每行第二个元素索引
print(w[1:3,:])#二维数组第2到3行索引
print(w[-1])#二维数组最后一行索引,等价于print(w[-1,:])
print(d.dtype)#获得数据类型

张量和数组的转换

import torch
'''numpy转tensor'''
color = np.array([[[0, 0, 0], [128, 0, 0], [0, 128, 0]],[[0, 0, 0], [128, 0, 0], [0, 128, 0]]])
b = torch.from_numpy(color)
'''将矩阵展开成一维'''
target = b.contiguous() .view(-1)
'''将矩阵展前面的维度展开,保持最后一维'''
target = b.contiguous() .view(-1,3)
'''维度转换'''
outlabimg = b.transpose(0, 1)#第0维和第1维互换
'''相同数值统计'''
a=torch.FloatTensor([[[2,3,0,5],[2,3,0,5]],[[2,3,0,5],[2,3,0,5]]])
b=torch.FloatTensor([[[2,3,4,5],[2,3,0,5]],[[2,3,0,5],[2,3,0,5]]])
equl=(a==b).sum()
print(a.shape)
print(equl)
目录
相关文章
|
4月前
|
算法 PyTorch 算法框架/工具
Pytorch学习笔记(九):Pytorch模型的FLOPs、模型参数量等信息输出(torchstat、thop、ptflops、torchsummary)
本文介绍了如何使用torchstat、thop、ptflops和torchsummary等工具来计算Pytorch模型的FLOPs、模型参数量等信息。
612 2
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch学习笔记(八):nn.ModuleList和nn.Sequential函数详解
PyTorch中的nn.ModuleList和nn.Sequential函数,包括它们的语法格式、参数解释和具体代码示例,展示了如何使用这些函数来构建和管理神经网络模型。
327 1
|
4月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
637 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
4月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(六):view()和nn.Linear()函数详解
这篇博客文章详细介绍了PyTorch中的`view()`和`nn.Linear()`函数,包括它们的语法格式、参数解释和具体代码示例。`view()`函数用于调整张量的形状,而`nn.Linear()`则作为全连接层,用于固定输出通道数。
203 0
Pytorch学习笔记(六):view()和nn.Linear()函数详解
|
4月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(五):nn.AdaptiveAvgPool2d()函数详解
PyTorch中的`nn.AdaptiveAvgPool2d()`函数用于实现自适应平均池化,能够将输入特征图调整到指定的输出尺寸,而不需要手动计算池化核大小和步长。
360 1
Pytorch学习笔记(五):nn.AdaptiveAvgPool2d()函数详解
|
4月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(四):nn.MaxPool2d()函数详解
这篇博客文章详细介绍了PyTorch中的nn.MaxPool2d()函数,包括其语法格式、参数解释和具体代码示例,旨在指导读者理解和使用这个二维最大池化函数。
266 0
Pytorch学习笔记(四):nn.MaxPool2d()函数详解
|
4月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
本文介绍了PyTorch中的BatchNorm2d模块,它用于卷积层后的数据归一化处理,以稳定网络性能,并讨论了其参数如num_features、eps和momentum,以及affine参数对权重和偏置的影响。
455 0
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
|
4月前
|
机器学习/深度学习 PyTorch TensorFlow
Pytorch学习笔记(二):nn.Conv2d()函数详解
这篇文章是关于PyTorch中nn.Conv2d函数的详解,包括其函数语法、参数解释、具体代码示例以及与其他维度卷积函数的区别。
565 0
Pytorch学习笔记(二):nn.Conv2d()函数详解
|
4月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(一):torch.cat()模块的详解
这篇博客文章详细介绍了Pytorch中的torch.cat()函数,包括其定义、使用方法和实际代码示例,用于将两个或多个张量沿着指定维度进行拼接。
211 0
Pytorch学习笔记(一):torch.cat()模块的详解
|
4月前
|
存储 并行计算 PyTorch
探索PyTorch:张量数值计算
探索PyTorch:张量数值计算

推荐镜像

更多