一、创建

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()