Pytorch学习笔记(⼗):Torch对张量的计算、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)#定义从起始值(参数⼀),到结束值(参数⼆),以步长(参数三)为间隔的单列多⾏张量
s(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)
(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)#显式指明数据类型
s((3,4))#创造⼀个3⾏4列的矩阵,并初始化为0,数据类型默认为float64,可⾃定义:dtype=np.int32
s((3,4))#创造⼀个3⾏4列的矩阵,并初始化为1
pty((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#乘法运算,按位相乘
anspose(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)
>linspace numpy
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论