torch简单数据操作

生成张量(数组)的几种方式

import torch
x=torch.arange(12)
# print(x)
# print(x.shape)
# print(x.numel())#number of elememt
x=x.reshape(3,4)
# print(x)
x=x.reshape(-1,3)#放置-1可以让张量自动推断维度
# print(x)
y=torch.zeros((2,3,4))#生成全0矩阵
# print(y)
y=torch.ones((2,3,4))#生成全1矩阵
# print(y)
y=torch.randn(3,4)#从均值为0,标准差为1的标准高斯分布正随机采样
print(y)

运算

算数基本运算

import torch
x = torch.tensor([1.,2,3,4])
y = torch.tensor([2,3,2,2])
print(x+y)
print(x-y)
print(x*y)
print(x/y)
print(x**y)#求x的y次幂
print(torch.exp(x))#求e的x次幂


张量连结

import torch
x=torch.arange(12,dtype=torch.float32).reshape((3,4))
y=torch.tensor([[2.,1,4,3],[3,5,2,3],[3,6,7,4]])
print(torch.cat((x,y),dim=0))#在列方向上合并两个张量
print(torch.cat((x,y),dim=1))#在行方向上合并两个张量

在这里插入图片描述

判断两个张量是否相等

import torch
x=torch.arange(12,dtype=torch.float32).reshape((3,4))
y=torch.tensor([[2.,1,4,3],[3,5,2,3],[3,6,7,4]])
print(x==y)

在这里插入图片描述

单个张量求和

import torch
x=torch.arange(12,dtype=torch.float32).reshape((3,4))
print(x.sum())

在这里插入图片描述

广播机制

import torch
x=torch.arange(3).reshape((3,1))
y=torch.arange(2).reshape((1,2))
print(x)
print(y)
#广播机制-前一个矩阵列的列和后一矩阵的行如果相同,在运算是可以自行将矩阵广播为相同的行列再进行运算
print(x+y)

在这里插入图片描述

切片与索引

import torch
x=torch.arange(12).reshape((3,4))
print(x[-1])#取出矩阵中的最后一行
print(x[1:3])#取出矩阵中的第一行和第三行
print(x[2,3])#取出第二行第三列的那个元素
x[0:2,:]=12#区间0到2行前闭后开,:表示所有列
print(x)

在这里插入图片描述

内存分配

import torch
x = torch.arange(12).reshape((3, 4))
y =torch.tensor([23,43,21,23])
print(id(y))
y=x+y
print(id(y))

在这里插入图片描述
可以发现,y的内存地址被重新分配了。如果想要不重新分配内存可以再创建新的z矩阵

import torch
x = torch.arange(4).reshape((1,4))
y =torch.tensor([23,43,21,23])
z=torch.zeros_like(y)#生成一个形状和y一样的全零矩阵
print(id(z))
z[:]=x+y
print(id(z))
z[:]=x-y
print(id(z))

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要将数据集封装到PyTorch中,您可以使用`torch.utils.data.Dataset`类来定义自己的数据集。以下是一个简单的例子来演示如何封装数据集: ```python import torch from torch.utils.data import Dataset class CustomDataset(Dataset): def __init__(self, data): self.data = data def __len__(self): return len(self.data) def __getitem__(self, index): sample = self.data[index] # 在这里进行数据预处理或转换操作 return sample # 创建数据集实例 data = [1, 2, 3, 4, 5] dataset = CustomDataset(data) # 创建数据加载器,用于迭代访问封装后的数据集 dataloader = torch.utils.data.DataLoader(dataset, batch_size=2, shuffle=True) # 使用数据加载器进行迭代访问数据 for batch in dataloader: print(batch) ``` 在上面的示例中,我们首先定义了一个名为`CustomDataset`的自定义数据集类,该类继承自`torch.utils.data.Dataset`。在`__init__`方法中,我们初始化数据集并将其保存在`self.data`中。`__len__`方法返回数据集的长度,`__getitem__`方法根据给定的索引返回对应的样本。 然后,我们创建了一个数据集实例`dataset`,并使用`torch.utils.data.DataLoader`创建了一个数据加载器`dataloader`。数据加载器用于对封装后的数据集进行迭代访问。我们可以指定批量大小、是否洗牌等参数。 最后,我们使用数据加载器`dataloader`进行迭代访问数据集。每个迭代步骤返回一个批量的数据样本。 希望这个例子能帮助到您!如果您有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值