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

数据操作

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

通常,我们需要做两件重要的事:(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]])
相关推荐
小王爱学人工智能10 小时前
OpenCV的阈值处理
人工智能·opencv·计算机视觉
新智元10 小时前
刚刚,光刻机巨头 ASML 杀入 AI!豪掷 15 亿押注「欧版 OpenAI」,成最大股东
人工智能·openai
机器之心11 小时前
全球图生视频榜单第一,爱诗科技PixVerse V5如何改变一亿用户的视频创作
人工智能·openai
新智元11 小时前
2025年了,AI还看不懂时钟!90%人都能答对,顶尖AI全军覆没
人工智能·openai
湫兮之风11 小时前
OpenCV: Mat存储方式全解析-单通道、多通道内存布局详解
人工智能·opencv·计算机视觉
机器之心11 小时前
Claude不让我们用!国产平替能顶上吗?
人工智能·openai
程序员柳11 小时前
基于YOLOv8的车辆轨迹识别与目标检测研究分析软件源代码+详细文档
人工智能·yolo·目标检测
算家计算11 小时前
一站式高质量数字人动画框架——EchoMimic-V3本地部署教程: 13 亿参数实现统一多模态、多任务人体动画生成
人工智能·开源
API流转日记11 小时前
Gemini-2.5-Flash-Image-Preview 与 GPT-4o 图像生成能力技术差异解析
人工智能·gpt·ai·chatgpt·ai作画·googlecloud
martinzh11 小时前
切块、清洗、烹饪:RAG知识库构建的三步曲
人工智能