数据的操作

x = torch.arange(12)#使用 arange 创建一个行向量 x 也称为张量x
x.shape#访问张量(沿每个轴的长度)的形状
#可以用x.reshape(-1,4)或x.reshape(3,-1)来取代x.reshape(3,4) 自动计算出维度
X = x.reshape(3, 4)#转换为形状为(3,4)的矩阵
torch.zeros((2, 3, 4))#创建一个形状为(2,3,4)的张量,其中所有元素都设置为0
torch.ones((2, 3, 4))#创建一个形状为(2,3,4)的张量,其中所有元素都设置为1
torch.randn(3, 4)#创建一个形状为(3,4)的张量,其中的每个元素都从均值为0、标准差为1的标准高斯分布(正态分布)中随机采样。
torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])#最外层的列表对应于轴0,内层的列表对应于轴1
#生成3*4的,每个元素为float的张量
X = torch.arange(12, dtype=torch.float32).reshape((3,4))
Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
#沿行(轴-0,形状的第一个元素) 和按列(轴-1,形状的第二个元素)连结两个矩阵
torch.cat((X, Y), dim=0), torch.cat((X, Y), dim=1)

a = torch.arange(3).reshape((3, 1))#3*1张量
b = torch.arange(2).reshape((1, 2))#1*2张量
#通过广播机制,将a,b张量扩展为形状相同的张量,进行相加
a + b

#节省内存
#形状与Y相同的矩阵,元素全为0
Z = torch.zeros_like(Y)
print('id(Z):', id(Z))
Z[:] = X + Y
print('id(Z):', id(Z))#Z的地址并没有变
X += Y#也不会增大内存开销

#torch张量和numpy数组将共享它们的底层内存,相互转变十分简单
A = X.numpy()
B = torch.tensor(A)
type(A), type(B)#(numpy.ndarray, torch.Tensor)

a = torch.tensor([3.5])
a, a.item(), float(a), int(a)#大小为1的张量,转变为python标量


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值