【深度学习】数据操作入门

数据操作

为了能够完成各种数据操作,我们需要某种方法来存储和操作数据。

通常,我们需要做两件重要的事:(1)获取数据;(2)将数据读入计算机后对其进行处理。

如果没有某种方法来存储数据,那么获取数据是没有意义的。

首先,我们介绍 n n n维数组,也称为张量(tensor)。

无论使用哪个深度学习框架,它的张量类 (在MXNet中为ndarray,在PyTorch和TensorFlow中为Tensor)都与Numpy的ndarray类似。

但深度学习框架又比Numpy的ndarray多一些重要功能:

首先,GPU很好地支持加速计算,而NumPy仅支持CPU计算;

其次,张量类支持自动微分。

这些功能使得张量类更适合深度学习。

入门

下面介绍并了解一些在阅读本书的过程中会用到的基本数值计算工具。

**首先,我们导入torch

请注意,虽然它被称为PyTorch,但是代码中使用torch而不是pytorch**

复制代码
import torch

张量表示一个由数值组成的数组,这个数组可能有多个维度。

具有一个轴的张量对应数学上的向量(vector);具有两个轴的张量对应数学上的矩阵(matrix);具有两个轴以上的张量没有特殊的数学名称。

首先,我们可以使用arange创建一个行向量x 。这个行向量包含以0开始的前12个整数,它们默认创建为整数,也可指定创建类型为浮点数。

张量中的每个值都称为张量的元素(element)。例如,张量x中有12个元素。除非另外指定,新的张量将存储在内存中,并采用基于CPU的计算。

复制代码
x = torch.arange(12)


可以通过张量的shape属性来访问张量(沿每个轴的长度)的形状(和张量中元素的总数)

复制代码
x.shape

如果只想知道张量中元素的总数 ,即形状的所有元素乘积,可以检查它的大小(size)。因为这里在处理的是一个向量,所以它的shape与它的size相同。

复制代码
x.numel()

要想改变一个张量的形状而不改变元素数量和元素值,可以调用reshape函数

例如,可以把张量x从形状为(12,)的行向量转换为形状为(3,4)的矩阵。

这个新的张量包含与转换前相同的值,但是它被看成一个3行4列的矩阵。需要重点说明一下,虽然张量的形状发生了改变,但其元素值并没有改变。注意,通过改变张量的形状,张量的大小不会改变。

复制代码
X = x.reshape(3, 4)

我们不需要通过手动指定每个维度来改变形状。也就是说,如果我们的目标形状是(高度,宽度),那么在知道宽度后,高度会被自动计算得出,不必我们自己做除法。在上面的例子中,为了获得x的矩阵,我们手动指定了它有3行和4列。

幸运的是,我们可以通过-1来调用此自动计算出维度的功能。

即我们可以用x.reshape(-1,4)x.reshape(3,-1)来获得一个3行4列的矩阵。

有时,我们希望使用全0、全1、其他常量,或者从特定分布中随机采样的数字来初始化矩阵

我们可以创建一个形状为(2,3,4)的张量,其中所有元素都设置为0,代码如下:

复制代码
torch.zeros((2, 3, 4))

同样,我们可以创建一个形状为(2,3,4)的张量,其中所有元素都设置为1,代码如下:

复制代码
torch.ones((2, 3, 4))

有时我们想通过从某个特定的概率分布中随机采样来得到张量中每个元素的值。例如,当我们构造数组来作为神经网络中的参数时,我们通常会随机初始化参数的值。以下代码创建一个形状为(3,4)的张量,其中的每个元素都从均值为0、标准差为1的标准高斯分布(正态分布)中随机采样。

复制代码
torch.randn(3, 4)

我们还可以通过提供包含数值的Python列表(或嵌套列表),来为所需张量中的每个元素赋予确定值。在这里,最外层的列表对应于轴0,内层的列表对应于轴1。

复制代码
torch.tensor([[1, 2, 3, 4], [1, 2, 3, 4], [4, 3, 2, 1]])

我们还可以[通过提供包含数值的Python列表(或嵌套列表),来为所需张量中的每个元素赋予确定值 ]。

在这里,最外层的列表对应于轴0,内层的列表对应于轴1。

复制代码
torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
相关推荐
kkzhang几秒前
Concept Bottleneck Models-概念瓶颈模型用于可解释决策:进展、分类体系 与未来方向综述
深度学习
零售ERP菜鸟2 分钟前
范式革命:从“信息化”到“数字化”的本质跃迁
大数据·人工智能·职场和发展·创业创新·学习方法·业界资讯
光羽隹衡4 分钟前
计算机视觉——Opencv(图像拼接)
人工智能·opencv·计算机视觉
SEO_juper20 分钟前
2026内容营销破局指南:告别流量内卷,以价值赢信任
人工智能·ai·数字营销·2026
初恋叫萱萱22 分钟前
数据即燃料:用 `cann-data-augmentation` 实现高效训练预处理
人工智能
一战成名99631 分钟前
CANN 仓库揭秘:昇腾 AI 算子开发的宝藏之地
人工智能
hnult38 分钟前
2026 在线培训考试系统选型指南:核心功能拆解与选型逻辑
人工智能·笔记·课程设计
A小码哥38 分钟前
AI 设计时代的到来:从 PS 到 Pencil,一个人如何顶替一个团队
人工智能
AIGCmitutu44 分钟前
PS 物体底部阴影怎么做?3 步做出自然逼真的投影效果
人工智能·电子商务·photoshop·ps·美工
开源技术1 小时前
Claude Opus 4.6 发布,100万上下文窗口,越贵越好用
人工智能·python