1.基本元素操作
import torch
# 创建时可以不指定dtype,默认为long;元素类型可以由精度大的向精度小的转换
# 精度大小:double<float<long<int<short<byte
# 快捷键:Ctrl+1 多行注释
# 没有初始化矩阵
a=torch.empty(5,3)
print(a)
# 有初始化矩阵
b=torch.rand(5,3)
print(b)
print(b.size()) # .size()得到张量的形状
# 创建全零矩阵,指定矩阵元素类型为long
c=torch.zeros(6,4,dtype=torch.long)
print(c)
# 直接通过数据创建张量
d=torch.tensor([2.5,3.5]) # 只能一行,可以有多个元素
print(d)
e=torch.tensor([5,5,6])
print(e)
# 通过已有张量(d)创建相同尺寸新张量
d=torch.tensor([2.5,3.5])
f=d.new_ones(5,3,dtype=torch.double) # new_methods,methods可以替换为已有的属性
print(f)
g=d.new_zeros(4,5,dtype=torch.long) # 所以methods不能随意替换数字
print(g)
# 利用randn_like方法创建相同尺寸张量,并随机初始化赋值
d=torch.tensor([2.5,3.5])
h=torch.randn_like(d,dtype=torch.double) # 使用randn_like时无论指定什么类型,
print(h) # 最后类型都和仿照的那个类型一样
j=torch.randn_like(d) # 可以不指定dtype=,默认和仿照的那个类型一样
print(j)
2.加法操作
import torch
x=torch.rand(4,3)
y=torch.rand(4,3)
print(x)
print(y)
# 1
print(x+y)
# 2
print(torch.add(x,y))
# 3.设一个空张量(result),把x+y结果输出到result
result=torch.empty(4,3)
torch.add(x,y,out=result)
print(result)
# 4.y.add_(x),结果存入y中,y的原数据被覆盖
y.add_(x)
print(y)
3.切片操作
import torch
x=torch.rand(6,4)
print(x)
# 提取x前1列
print(x[:,:1])
# 提取x前3列
print(x[:,:3])
4.Torch Tensor和Numpy array之间的转换
import torch
#Torch Tensor和Numpy array共享底层的内存空间, 因此改变其中一个的值, 另一个也会随之被改变
a=torch.ones(5)
print(a)
# 将Torch Tensor转换为Numpy array
b=a.numpy()
print(b)
# a加上2结果存入a中,b结果也改变
a.add_(2)
print(a)
print(b)
#将Numpy array转换为Torch Tensor
import numpy as np
x=np.ones(5)
y=torch.from_numpy(x)
print(x)
print(y)
np.add(x,2,out=x)
print(x)
print(y)