注:以下均基于导入库
import torch
import torch as t
import torch.nn as nn
import torch.nn.functional as F
-
构造方法
常用函数
-
.reshape()#变形
-
.size()#返回大小
-
.dim()#返回维度,即size返回的数据条目个数
-
.numel()#返回元素个数,即size返回条目之积
-
.dtype#查看元素类型,int默认torch.int64,bool默认torch.uint8,float默认touch.float32
-
常用计算
-
.repeat() 重复
-
增减维度unsqueeze 、squeeze(不改变元素位置)
a=torch.Tensor([[1,2,3],[4,5,6]])
print(a.size())#torch.Size([2, 3])
b=a.unsqueeze(2)#括号里为维度增加的位置
print(b.size())#torch.Size([2, 3, 1])
c=b.squeeze(-1)#去维度
print(c.size())#torch.Size([2, 3])
-
.sequeeze()可消除张量大小中大小为1的维度
-
.unsqueeze()可增加以下大小为0的维度
-
permute()/transpose()/t()张量的交换、张量的转置、二维张量转置
-
Tensor连接cat
a=torch.Tensor([[1,2,3],[4,5,6]])
d=torch.ones([2,3])
e=torch.cat([a,d],1)
print(e)
print(torch.cat([a **i for i in range(3)],1))
#result:
# tensor([[1., 2., 3., 1., 1., 1.],
# [4., 5., 6., 1., 1., 1.]])
# tensor([[ 1., 1., 1., 1., 2., 3., 1., 4., 9.],
# [ 1., 1., 1., 4., 5., 6., 16., 25., 36.]])
-
大于某个值ge
a=torch.Tensor([[1,2,3],[4,5,6]])
b=torch.Tensor([0.3,0.40,0.6,0.8,0.1])
print(b.ge(0.5))#tensor([0, 0, 1, 1, 0], dtype=torch.uint8)
print(b.ge(0.5).float())#tensor([0., 0., 1., 1., 0.])
cor=((b.ge(0.5).float()==torch.ones(5)).sum())
print(cor)#tensor(2)
print(b.size(),b.size(0))#torch.Size([5]) 5
加法
数据类型转换
tensor->numpy .numpy()
numpy->tensor torch.numpy(X)
import torch
a=torch.eye(2,3)
print(a)
'''
tensor([[1., 0., 0.],
[0., 1., 0.]])
'''
a.add_(1)
print(a)
'''
tensor([[2., 1., 1.],
[1., 2., 1.]])
'''
b=a.numpy()
print(type(b)) # <class 'numpy.ndarray'>
c=torch.from_numpy(b)
print(type(c)) # <class 'torch.Tensor'>