3 PyTorch读入各类形式的数据

本章介绍了PyTorch如何处理不同类型的数据,包括表格式、文本、图像和立体数据,强调将数据转换为Tensor并进行预处理的重要性。详细讲解了如何使用Numpy和Pandas读取表格式数据,文本数据的清理与预处理,构建词典和one-hot编码,图像数据的标准化,以及处理立体数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎订阅本专栏:《PyTorch深度学习实践》
订阅地址:https://blog.youkuaiyun.com/sinat_33761963/category_9720080.html

  • 第二章:认识Tensor的类型、创建、存储、api等,打好Tensor的基础,是进行PyTorch深度学习实践的重中之重的基础。
  • 第三章:学习PyTorch如何读入各种外部数据
  • 第四章:利用PyTorch从头到尾创建、训练、评估一个模型,理解与熟悉PyTorch实现模型的每个步骤,用到的模块与方法。
  • 第五章:学习如何利用PyTorch提供的3种方法去创建各种模型结构。
  • 第六章:利用PyTorch实现简单与经典的模型全过程:简单二分类、手写字体识别、词向量的实现、自编码器实现。
  • 第七章利用PyTorch实现复杂模型:翻译机(nlp领域)、生成对抗网络(GAN)、强化学习(RL)、风格迁移(cv领域)。
  • 第八章:PyTorch的其他高级用法:模型在不同框架之间的迁移、可视化、多个GPU并行计算。

在现实场景中,数据由很多种形式存在,如存在表格中的数据、时间序列数据、图像数据、视频数据、文本数据等。在使用pytorch建立深度学习模型前,无论什么样的数据我们都要转换成tensor的形式, 并做好预处理,为喂入模型做准备。因此本章的主要内容是讲解如何读入各类数据、转换成tensor、并预处理好的过程。

3.1 表格式数据

数据形式:
表格式数据是比较常见的数据形式,一般存放再excel, csv, database中。其每一行是一个样本,每一列是样本的一个特性,每个样本之间是独立的即行与行之间没有顺序关系(和时间序列数据的最大差异)。

数据类型:
每一列的特性在表格类数据类型都可能不同,比如“温度”是数值型,“颜色”是字符串。
而一个pytorch tensor中的数值类型都是需要相同的,因此这就需要转换了。

读入数据:
常用的方法有:csv module, NumPy, Pandas
使用Pandas在时间和内存上都较为高效,但由于本文在将pytorch, 且前文也提到了与NumPy的交互,因此这里先介绍Numpy获取:

import numpy as np

path = "data.csv"
data = np.loadtxt(path, dtype=np.float32, delimiter=",")

检查数据:
可以通过这种方式检查数据大小,和列名

import csv

col_list = next(csv.reader(open(path), delimiter=','))

print(data.shape)
print(col_list)

转换成tensor:

import torch
data = torch.from_numpy(data)

print(data.shape)
print(data.type)

预处理数据:
现在数据以tensor形式存在,但还不可以直接喂给模型,需要做一些预处理。
(1)分割特征集与标签

features = data[
### 数据转换的概念与方法 数据转换是指将一种形式数据转化为另一种形式的过程,通常用于满足特定的应用需求或优化程序性能。以下是常见的数据转换方法及其具体实现: #### 1. **C#中的数据类型转换** 在C#中,数据类型的转换可以通过多种方式进行,包括但不限于隐式转换、显式转换、`Convert`类、字符串解析以及`ToString()`方法[^1]。 - **隐式转换** 隐式转换发生在无需额外操作即可完成的类型之间,例如从较小范围的数值类型到较大范围的数值类型(如 `int` 转换为 `long`)。这种转换不会丢失精度也不会引发异常。 - **显式转换** 显式转换需要开发者手动指定,可能涉及数据损失或抛出异常的情况。例如 `(double)myIntValue;` - **使用 Convert 类** C# 提供了一个名为 `Convert` 的静态类,可以方便地执行各种类型之间的转换。例如: ```csharp int intValue = Convert.ToInt32("123"); ``` - **字符串解析** 解析是一种通过字符串表示的形式将其转换为目标类型的常见方式。例如: ```csharp string str = "456"; int result = int.Parse(str); ``` - **ToString 方法** 将任意对象转换为其字符串表示形式的一种通用方法。几乎所有 .NET 对象都支持此功能。例如: ```csharp double d = 123.45; string s = d.ToString(); ``` --- #### 2. **文本文件转二维数组 (Array)** 对于处理结构化数据的任务,比如读取 `.txt` 文件并将其内容存储为二维数组,可以采用如下方法[^3]: 假设有一个简单的 CSV 格式的文本文件,每行代表一组记录,字段间由逗号分隔,则可通过以下代码实现其加载至二维数组的操作: ```csharp string filePath = @"example.txt"; // 假设这是路径名 List<string[]> lines = new List<string[]>(); using (StreamReader reader = new StreamReader(filePath)) { while (!reader.EndOfStream) { var line = reader.ReadLine(); // 按行读取 var values = line.Split(&#39;,&#39;); // 使用逗号作为分隔符拆分行 lines.Add(values); // 添加分割后的结果到列表 } } // 将 List 转换成 Array var arrayResult = lines.ToArray(); ``` 上述代码片段展示了如何逐行读入文件,并利用 `Split` 函数按自定义分隔符分解每一行的内容,最终形成一个二维字符串数组。 --- #### 3. **图像数据增强技术应用于数据集准备阶段** 除了传统的数值型数据外,在机器学习领域特别是计算机视觉方向上,还存在针对图像数据的预处理手段——即所谓的 *数据增强* 技术[^2]。这些技术不仅有助于扩充训练样本数量,还能有效缓解因数据不足而导致的过拟合现象。 一些典型的数据增强策略包括但不限于裁剪(Crop),随机水平翻转(Random Horizontal Flip),颜色抖动(Color Jittering),旋转(Rotation)等变换操作。下面给出一段 Python 中基于 PyTorch 库实现简单图像增广的例子: ```python import torchvision.transforms as transforms transform_pipeline = transforms.Compose([ transforms.RandomResizedCrop(224), transforms.RandomHorizontalFlip(), transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.1), transforms.ToTensor() ]) ``` 这里构建了一条流水线,依次应用不同的几何和色彩空间上的调整动作给输入图片施加影响,从而生成多样化的版本参与后续的学习过程。 --- ### 总结 无论是基础编程语言层面还是高级人工智能框架内部,数据转换都是不可或缺的一环。它贯穿整个开发周期的不同环节,从原始素材获取直至最后成果展示均有所体现。掌握好各类工具和技术能够显著提升工作效率及产品质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值