一、创建
1.1 基本的创建函数
x1=torch.empty(3,2)
x2=torch.rand(3,2)
x3=torch.zeros(3,2)
x4=torch.ones(3,2)
print(x1)
print(x2)
print(x3)
print(x4)
1.2 指定类型
上述的函数都可以用dtype参数指定类型
y2=torch.rand(3,2,dtype=torch.double)
y2
1.3 指定形状
可以用xx_like函数指定一个旧的tensor的形状
z1=torch.empty_like(x1)
z2=torch.rand_like(x1)
z3=torch.zeros_like(x1)
z4=torch.ones_like(x1)
print(z1)
print(z2)
print(z3)
print(z4)
1.3.1 补充:获得张量的形状
tensor.size()函数返回一个tensor.size类型的tuple,本质是tuple,支持一切tuple操作。
m=x.size()
print(m)
print(type(m))#本质上是一个tuple,支持一切元组操作
比如,可以用x,y=tuple1调出每一个维度
a,b=x.size()
print(a)
print(b)
二、加法运算
茴字有四种写法,你知道吗(ノ"◑ ◑)ノ"
2.1 加法
k=torch.rand(3,2)
l=torch.rand(3,2)
2.1.1 方法1
k+l
2.2.2 方法2
torch.add(k,l)
2.2.3 方法3
即使有out参数,返回值也是和
ans=torch.zeros_like(k)
output=torch.add(k,l,out=ans)
print(ans)
print(output)
2.2.4 方法4
t1.add(t2)和t1.add_(t2)都会返回和,区别只是是否改变t1的值
k=torch.ones(3,2)
l=torch.ones(3,2)
output=k.add_(l)
print(k)
print(output)
k=torch.ones(3,2)
l=torch.ones(3,2)
output=k.add(l)
print(k)
print(output)
2.2.5 【补充2.2.4】in_place方法
在函数后面加一个_,意为改变原数据。例如x=copy_(y),它与x=y的区别是:前者将y的值赋给x,后者是x与y指向同一个地址。
k=torch.zeros(3,2)
l=torch.ones(3,2)
k=l
l+=1
print(k)
print(l)
k=torch.zeros(3,2)
l=torch.ones(3,2)
k.copy_(l)
l+=1
print(k)
print(l)
2.2 切片
#切片
r=torch.randn(3,2)
print(r)
print(r[:,1])
2.3 tensor.view()
#tensor.view
h=torch.randn(3,6)
h1=h.view(18)#不改变原来的h
h2=h.view(-1,9)
print(h.size(),h1.size(),h2.size())
print(h)
print(h2)#可见就是按照内存简单排布的
2.4 tensor.item()
只有一个元素时,可以将其取出
h2[0,0].item()