从零构建自己的神经网络————数据集篇

这篇具有很好参考价值的文章主要介绍了从零构建自己的神经网络————数据集篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、数据集

如果在此之前,你已经对神经网络的概念有所了解的话,相信你一定明白数据集的重要性。好的数据集决定着你的模型的好坏,不过这并不是我们这篇文章所要讨论的事情。今天我们所要说的是如何导入数据集。
从数据集的来源不同,我们对数据集的导入分为两种:

1.从第三方库中导入

使用PyTorch内置的数据集类(如torchvision.datasets.ImageFolder、torchvision.datasets.CIFAR10等),这些类提供了访问常见数据集的简单方法。
下面是一个加载CIFAR10数据集的示例代码

import torchvision.datasets as datasets
import torchvision.transforms as transforms

# 定义数据预处理
transform = transforms.Compose(
    [transforms.ToTensor(),
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

# 加载CIFAR10数据集
trainset = datasets.CIFAR10(root='./data', train=True,
                                        download=True, transform=transform)
testset = datasets.CIFAR10(root='./data', train=False,
                                       download=True, transform=transform)

本着负责认真的态度,作者在这里有必要认真讲解下这段代码的详细含义,不过在这之前我们需要思考一下几个问题,这对学习很重要:
我们导入的数据集是图片数据集,怎么将一张图片用代码表示?

这时可能会有人说用像素值形成一个矩阵
对的,没错确实如此,
不过只有黑白照片才可以用一个像素矩阵表示,我们生活中大多数图片有颜色的,这就需要了解所谓的颜色通道,常见的是RGB三种(当然还有其他的颜色通道),我们以RGB为例:
一张彩色的图片有三个颜色通道-------由三个颜色(red,green,blue)矩阵表示,那很明显一个像素矩阵是表示不了的,所以得用三个矩阵来表示。
然而,当你把图像用三个矩阵表示出来并输入计算机中,计算机怎么知道这是一个彩色的图片而不是三个黑白图呢?

这里们需要引入一个新的数据形式,张量(tensor);跟标量、向量、矩阵这种常见的结构一样,张量也是一种数学中的一种数据形式。
在神经网络中,张量(tensor)是一种常用的数据形式,图像用作张量来存储。
②该如何对数据集进行划分?
因为我们不能拿全部的数据集用来训练,所以需要对数据集进行划分,我们希望在导入数据集中就能自动划分,而无需手动划分。

以下是对上述代码的详细解释:

# 定义数据预处理
transform = transforms.Compose(
    [transforms.ToTensor(),
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
     #函数介绍
     transforms.Compose 函数,用于将多个变换组合成一个可调用的变换对象。
       预处理常用的变换包括对图像进行缩放、裁剪、旋转、归一化等操作,以便更好地适应训练模型
     #参数列表:
     	transforms.ToTensor()表示将图片转换成向量
     	transforms.Normalize() 则是将每个通道的像素值减去均值(在这里是 0.5)并除以标准差
     	(在这里也是 0.5),以使得每个通道的像素值都在 -11 之间。


# 加载CIFAR10数据集
trainset = datasets.CIFAR10(root='./data', train=True,
                                        download=True, transform=transform)
             #以下是参数列表
	              root:数据集下载位置
	              train:表示是否为训练集,true表示是训练集,false的话一般是测试集
	              transform:参数指定了如何对数据进行预处理(或变换),此处参数指定了在上方所写的预处理方式
		#至此,我们得到名为trainset的变量,它是一个包含 CIFAR-10 训练集的 torchvision.datasets.CIFAR10 对象,其中包含了处理后的图像数据和对应的标签。

testset = datasets.CIFAR10(root='./data', train=False,
                                       download=True, transform=transform)

接下来,我们试着打印下训练集:
神经网络数据集,深度学习,pytorch,神经网络,深度学习,python,人工智能,机器学习

2.导入本地的数据集

如果已经下载好了,或者自己标注的数据集,我们则需要导入本地数据集

自定义数据集类,这个方法适用于加载自己的数据集。下面是一个示例代码,后面再做详细解释:

import torchvision
LOAD_CIFAR = True
DOWNLOAD_CIFAR = True

train_data = torchvision.datasets.CIFAR10(
    root='./data/',
    train=True,
    transform=torchvision.transforms.ToTensor(),
    download=DOWNLOAD_CIFAR,
)

老样子,为了更好理解,我们需要考虑几个问题(不过在这之前我希望您能先自己想想):

①怎么将多个图片(几千,甚至几万张)导入代码中,并存储起来?
我们并不是将图片都读入代码中,我们只是将图片对应的文件地址以及标签对应的名字分别写入图片列表列表和标签列表中。
具体代码在本文不在书写,请参考其他文章。

②图片数据集往往是有标注的,但是图片不能写文字,所以怎么将标注和图片一一对应?
将图片和标注一一对应可以通过两种方式实现:

1.文件名对应法

一种常见的方法是将图片文件名与标注文件名保持一致或者有一定的规律。例如,可以将图片文件命名为1.jpg,2.jpg,3.jpg等,对应的标注文件命名为1.txt,2.txt,3.txt等。这样可以通过文件名的对应关系来将图片和标注一一对应。

2.数据库存储法

另一种方法是将图片和标注数据存储到数据库中。每张图片都有一个唯一的标识符(比如图片的文件名或者数据库中的id),在数据库中与该图片对应的标注数据也被存储在同一行中,这样可以确保图片和标注一一对应

③怎么区分数据集和训练集合?
这里需要用到一个函数

CustomDataset是一个自定义的数据集类,它的构造函数需要两个参数:txt_path和transform。其中,txt_path是包含数据集信息的文本文件的路径,transform是对数据集进行预处理的函数或变换。

train_dataset = CustomDataset(txt_path='./train.txt', transform=transform)
test_dataset = CustomDataset(txt_path='./test.txt', transform=transform)

③怎么使用这些数据集?因为我们不可能一张一张的调用吧,最好想上方代码中一样,交给一个对象管理
开发者自然想到这个问题,为此提供了一个专门的数据类数据加载器(DataLoader),这个类很重要,神经网络训练都是使用这个类,其主要用于将数据集分批加载到内存中,以便在训练过程中更高效地处理数据。
以下是代码实例:

dataloader = DataLoader(dataset, batch_size=3, shuffle=True)
#其参数含义如下
			dataset是一个PyTorch的数据集对象,它包含了整个数据集。
   		    batch_size=3:每个批次中包含3个数据样本。
    		shuffle=True:每次获取批次数据时是否对数据集进行随机打乱操作,这样可以增加模型的鲁棒性,
    		       防止模型对数据的顺序产生过拟合。
DataLoader是PyTorch中一个用于加载数据的工具类,它能够将数据集中的数据转换成批次的数据,方便机器学习模型的训练。

因此,这段代码的含义是创建一个能够将dataset中的数据分批次加载的数据加载器,每个批次包含3个随机排列的数据样本。文章来源地址https://www.toymoban.com/news/detail-639473.html

到了这里,关于从零构建自己的神经网络————数据集篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从零开始的神经网络

    了解如何在没有框架帮助的情况下构建神经网络的基础知识,这些框架可能使其更易于使用 在 Python 中创建具有不同架构的复杂神经网络应该是任何机器学习工程师或数据科学家的标准做法。但是,真正了解神经网络的工作原理同样有价值。在本文中,您将了解如何在没有框

    2024年01月16日
    浏览(49)
  • 乳腺癌CT影像数据的深度学习:R语言与ANN神经网络构建高性能分类诊断模型

    乳腺癌是全球最常见的女性恶性肿瘤之一,也影响着男性的健康。据统计,每年有数百万人被诊断出患有乳腺癌[1]。乳腺癌的早期检测和准确诊断对于治疗和预后至关重要。然而,乳腺癌的早期诊断面临许多挑战,如图像解读的主观性和复杂性,以及差异化的病理特征[2]。因

    2024年02月14日
    浏览(49)
  • 小白的机器学习之路(四)神经网络的初步认识:基于pytorch搭建自己的神经网络

    当前交通大数据业务的需要,需要承担一部分算法工作(数据处理) 目标四: 学习深度学习基础:了解神经网络的基本结构、反向传播算法和激活函数等。 目标任务:使用深度学习算法构建一个简单的神经网络模型,并训练模型。 学习计划小贴士: 每天定期复习前几天的

    2024年02月15日
    浏览(39)
  • 从零使用TensorFlow搭建CNN(卷积)神经网络

    🍅 写在前面 👨‍🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。 🔎个人主页:主页链接(欢迎各位大佬光临指导) ⭐️近期专栏:机器学习与深度学习                        LeetCode算法实例 本节内容主要向大家

    2023年04月22日
    浏览(45)
  • 【构建卷积神经网络】

    构建卷积神经网络 卷积网络中的输入和层与传统神经网络有些区别,需重新设计,训练模块基本一致 全连接层:batch 784,各个像素点之间都是没有联系的。 卷积层:batch 1 28 28,各个像素点之间是有联系的。 首先读取数据 分别构建训练集和测试集(验证集) DataLoader来迭代

    2024年02月13日
    浏览(28)
  • pytorch基础 神经网络构建

    www.ai-xlab.com AI MOOC Torch介绍 Torch是一个开源的机器学习的框架,早在2002年就发 布了Torch的初版,Torch的编程语言为C和Lua。如今 的Torch7依旧是热门的深度学习框架之一。 www.ai-xlab.com AI MOOC PyTorch介绍 PyTorch是在2017年1月由Facebook推出的。它是经 典机器学习库Torch框架的一个端口,

    2024年01月21日
    浏览(48)
  • pytorch-构建卷积神经网络

    构建卷积神经网络 卷积网络中的输入和层与传统神经网络有些区别,需重新设计,训练模块基本一致 首先读取数据 分别构建训练集和测试集(验证集) DataLoader来迭代取数据 卷积网络模块构建 一般卷积层,relu层,池化层可以写成一个套餐 注意卷积最后结果还是一个特征图

    2024年02月09日
    浏览(39)
  • 【神经网络结构可视化】PlotNeuralNet的安装、测试及创建自己的神经网络结构可视化图形

    1、下载MikTeX 下载链接: MikTeX ( https://miktex.org/download ) 2、下载Git bash 下载链接: Git bash ( https://git-scm.com/download/win ) 3、下载PlotNeuralNet 下载链接: PlotNeuralNet ( https://github.com/HarisIqbal88/PlotNeuralNet?tab=readme-ov-file ) 1、解压PlotNeuralNet-master.zip 将下载的PlotNeuralNet-master.zip解压到当前

    2024年04月25日
    浏览(48)
  • 神经网络(NN)网络构建及模型算法介绍

    神经网络最主要的作用是作为提取特征的工具,最终的分类并不是作为主要核心。 人工神经网络也称为多层感知机,相当于将输入数据通过前面多个全连接层网络将原输入特征进行了一个非线性变换,将变换后的特征拿到最后一层的分类器去分类。 神经网络是由多个神经元

    2024年02月04日
    浏览(75)
  • 构建神经网络的流程是什么?

    构建神经网络涉及多个步骤,从理解问题到设计、实现、训练和验证模型。以下是构建神经网络的典型流程: 定义问题 理解问题域:清晰地定义你想要用神经网络解决的问题。这可能是分类问题、回归问题或者其他类型的任务。 确定输入和输出:明确你的网络需要接收什么

    2024年01月17日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包