torch.utils.data.DataLoader参数分析

1、dataset:(数据类型 dataset)

输入的数据类型,这里是原始数据的输入。PyTorch内也有这种数据结构。

2、batch_size:(数据类型 int)

批训练数据量的大小,根据具体情况设置即可(默认:1)。PyTorch训练模型时调用数据不是一行一行进行的(这样太没效率),而是一捆一捆来的。这里就是定义每次喂给神经网络多少行数据,如果设置成1,那就是一行一行进行(个人偏好,PyTorch默认设置是1)。每次是随机读取大小为batch_size。如果dataset中的数据个数不是batch_size的整数倍,这最后一次把剩余的数据全部输出。若想把剩下的不足batch size个的数据丢弃,则将drop_last设置为True,会将多出来不足一个batch的数据丢弃。

3、shuffle:(数据类型 bool)

洗牌。默认设置为False。在每次迭代训练时是否将数据洗牌,默认设置是False。将输入数据的顺序打乱,是为了使数据更有独立性,但如果数据是有序列特征的,就不要设置成True了。

4、collate_fn:(数据类型 callable,没见过的类型)

将一小段数据合并成数据列表,默认设置是False。如果设置成True,系统会在返回前会将张量数据(Tensors)复制到CUDA内存中。

5、batch_sampler:(数据类型 Sampler)

批量采样,默认设置为None。但每次返回的是一批数据的索引(注意:不是数据)。其和batch_size、shuffle 、sampler and drop_last参数是不兼容的。我想,应该是每次输入网络的数据是随机采样模式,这样能使数据更具有独立性质。所以,它和一捆一捆按顺序输入,数据洗牌,数据采样,等模式是不兼容的。

6、sampler:(数据类型 Sampler)

采样,默认设置为None。根据定义的策略从数据集中采样输入。如果定义采样规则,则洗牌(shuffle)设置必须为False。

7、num_workers:(数据类型 Int)

工作者数量,默认是0。使用多少个子进程来导入数据。设置为0,就是使用主进程来导入数据。注意:这个数字必须是大于等于0的,负数估计会出错。

8、pin_memory:(数据类型 bool)

内存寄存,默认为False。在数据返回前,是否将数据复制到CUDA内存中。

9、drop_last:(数据类型 bool)

丢弃最后数据,默认为False。设置了 batch_size 的数目后,最后一批数据未必是设置的数目,有可能会小些。这时你是否需要丢弃这批数据。

10、timeout:(数据类型 numeric)

超时,默认为0。是用来设置数据读取的超时时间的,但超过这个时间还没读取到数据的话就会报错。 所以,数值必须大于等于0。

11、worker_init_fn(数据类型 callable,没见过的类型)

子进程导入模式,默认为Noun。在数据导入前和步长结束后,根据工作子进程的ID逐个按顺序导入数据。

import torch
import torch.utils.data as DataBATCH_SIZE = 5x = torch.linspace(1, 11, 11)
y = torch.linspace(11, 1, 11)print(x)
print(y)# 把数据放在数据库中
torch_dataset = Data.TensorDataset(x, y)
loader = Data.DataLoader(#从数据库中每次抽出batch_size个样本dataset=torch_dataset,batch_size=BATCH_SIZE,#将输入数据的顺序打乱shuffle=True,#工作者数量,默认是0。使用多少个子进程来导入数据。设置为0,就是使用主进程来导入数据。注意:这个数字必须是大于等于0的,负数估计会出错。# num_workers=2,
)def show_batch():for epoch in range(3):print("第{}个epoch:".format(epoch))for step, (batch_x, batch_y) in enumerate(loader):# 开始训练,每次去除batch_size个数据print("steop:{}, batch_x:{}, batch_y:{}".format(step, batch_x, batch_y))if __name__ == '__main__':show_batch()输出:
tensor([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10., 11., 12., 13.])
tensor([13., 12., 11., 10.,  9.,  8.,  7.,  6.,  5.,  4.,  3.,  2.,  1.])
第0个epoch:
steop:0, batch_x:tensor([13.,  3., 10.,  4., 11.]), batch_y:tensor([ 1., 11.,  4., 10.,  3.])
steop:1, batch_x:tensor([12.,  6.,  1.,  9.,  8.]), batch_y:tensor([ 2.,  8., 13.,  5.,  6.])
steop:2, batch_x:tensor([5., 7., 2.]), batch_y:tensor([ 9.,  7., 12.])
第1个epoch:
steop:0, batch_x:tensor([ 8.,  2.,  5.,  4., 12.]), batch_y:tensor([ 6., 12.,  9., 10.,  2.])
steop:1, batch_x:tensor([11.,  7., 10.,  9.,  3.]), batch_y:tensor([ 3.,  7.,  4.,  5., 11.])
steop:2, batch_x:tensor([ 1., 13.,  6.]), batch_y:tensor([13.,  1.,  8.])
第2个epoch:
steop:0, batch_x:tensor([ 5.,  9.,  7.,  8., 11.]), batch_y:tensor([9., 5., 7., 6., 3.])
steop:1, batch_x:tensor([13., 12.,  4.,  6., 10.]), batch_y:tensor([ 1.,  2., 10.,  8.,  4.])
steop:2, batch_x:tensor([2., 3., 1.]), batch_y:tensor([12., 11., 13.])
第3个epoch:
steop:0, batch_x:tensor([ 4.,  7., 13.,  1., 12.]), batch_y:tensor([10.,  7.,  1., 13.,  2.])
steop:1, batch_x:tensor([ 9.,  6.,  8., 10.,  3.]), batch_y:tensor([ 5.,  8.,  6.,  4., 11.])
steop:2, batch_x:tensor([ 2., 11.,  5.]), batch_y:tensor([12.,  3.,  9.])

 若drop_last=True

丢弃最后数据,默认为False。设置了 batch_size 的数目后,最后一批数据未必是设置的数目,有可能会小些。这时你是否需要丢弃这批数据。

import torch
import torch.utils.data as DataBATCH_SIZE = 5x = torch.linspace(1, 13, 13)
y = torch.linspace(13, 1, 13)print(x)
print(y)# 把数据放在数据库中
torch_dataset = Data.TensorDataset(x, y)
loader = Data.DataLoader(#从数据库中每次抽出batch_size个样本dataset=torch_dataset,batch_size=BATCH_SIZE,#将输入数据的顺序打乱shuffle=True,#工作者数量,默认是0。使用多少个子进程来导入数据。设置为0,就是使用主进程来导入数据。注意:这个数字必须是大于等于0的,负数估计会出错。# num_workers=2,drop_last=True
)def show_batch():#整个样本数据使用4次for epoch in range(4):print("第{}个epoch:".format(epoch))for step, (batch_x, batch_y) in enumerate(loader):# 开始训练,每次去除batch_size个数据print("steop:{}, batch_x:{}, batch_y:{}".format(step, batch_x, batch_y))if __name__ == '__main__':show_batch()输出:
tensor([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10., 11., 12., 13.])
tensor([13., 12., 11., 10.,  9.,  8.,  7.,  6.,  5.,  4.,  3.,  2.,  1.])
第0个epoch:
steop:0, batch_x:tensor([ 4., 10.,  7.,  3.,  5.]), batch_y:tensor([10.,  4.,  7., 11.,  9.])
steop:1, batch_x:tensor([ 9.,  8.,  2., 11., 13.]), batch_y:tensor([ 5.,  6., 12.,  3.,  1.])
第1个epoch:
steop:0, batch_x:tensor([ 3.,  7., 13.,  1.,  9.]), batch_y:tensor([11.,  7.,  1., 13.,  5.])
steop:1, batch_x:tensor([ 8.,  5., 11., 10.,  2.]), batch_y:tensor([ 6.,  9.,  3.,  4., 12.])
第2个epoch:
steop:0, batch_x:tensor([ 7.,  1.,  5.,  8., 13.]), batch_y:tensor([ 7., 13.,  9.,  6.,  1.])
steop:1, batch_x:tensor([ 9., 10.,  2.,  4.,  3.]), batch_y:tensor([ 5.,  4., 12., 10., 11.])
第3个epoch:
steop:0, batch_x:tensor([ 4.,  5., 11.,  6.,  8.]), batch_y:tensor([10.,  9.,  3.,  8.,  6.])
steop:1, batch_x:tensor([ 2.,  1.,  9., 10., 12.]), batch_y:tensor([12., 13.,  5.,  4.,  2.])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/771521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch8 - Docker安装Elasticsearch8.12.2

前言 最近在学习 ES,所以需要在服务器上装一个单节点的 ES 服务器环境:centos 7.9 安装 下载镜像 目前最新版本是 8.12.2 docker pull docker.elastic.co/elasticsearch/elasticsearch:8.12.2创建配置 新增配置文件 elasticsearch.yml http.host…

16 网络管理与网络安全(3)

1.公钥基础设施( PKI) PKI 是利用公钥加密和数字签名技术建立的安全服务基础设施,以保证网络环境中数据的秘密性、完整性与不可抵赖性。PKI 是一种针对电子商务、电子政务应用,利用非对称加密体系,提供安全服务的通用性…

微信聊天记录删了怎样才能恢复?揭秘4个宝藏方法

在我们使用微信进行聊天的过程中,不可避免地会出现误删聊天记录的情况,这可能是因为手误、设备问题或其他原因导致的。而当重要的聊天记录不慎被删除时,往往会让人感到焦虑和困扰。然而,幸运的是,针对被删除的微信聊天…

函数式编程的理解

函数式编程(Functional Programming,简称FP)是一种编程范式,它将计算视为数学函数的求值,并避免使用程序状态以及易变对象。这种编程风格强调不可变性(Immutability)、纯函数(Pure F…

Java基础--128陷阱

问题引入 Integer a 123; Integer b 123; System.out.println(ab); 结果为true。 但是如果代码如下 Integer a 1230;Integer b 1230;System.out.println(ab); 这个的结果就是false。 问题解决 当Integer a 123时,其实他底层自动转换成了Integer a Inte…

docker--Dockerfile (三)

1,Dcockerfile是什么 docker推荐使用dockerfile的定义文件和docker build命令来构建镜像。dockerfile使用基本的基于DSL(面向领域语言)语法的指令来构建Docker镜像。另一种创建Docker镜像的方式是使用docker commit,不推荐使用。 …

【python】flask执行上下文context,请求上下文和应用上下文原理解析

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

SqlServer期末复习(数据库原理及应用)持续更新中

一、SQL语句 1.1 SQL语句知识引入 1.DDL语言(数据定义语言)主要是进行定义/改变表的结构、数据类型、表之间的链接等操作,关键字CREATE、DROP、ALTER CREATE TABLE 表面( 列名1 数据类型, 列名2 数据类型, ) ALTER TABLE 表名&a…

掌控仓位管理之道 稳健操作赢得长期收益

作为投资领域资深从业者,刘国海老师拥有顶尖学府香港中文大学和纽约大学的高等教育背景,通过20余年的金融投资实战,累积了大量操作经验,对市场行情亦有精准洞察。 在漫长投资历程中,刘国海老师一直高度重视仓位管理,视之为获取稳健收益的重中之重。合理仓位是投资收益与风险之…

MFC 打开类向导中方法时提示对com组件的调用返回了错误 HRESULT E_FAIL

解决:头文件中要分类,把virtual和afx_msg等放在一起,不要交叉错开。 MFC(Microsoft Foundation Class)中的virtual关键字用于声明虚函数。虚函数是C中实现多态的一种机制,它允许派生类重新定义基类中的虚函…

【算法刷题day6】Leetcode:242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

文章目录 Leetcode 242. 有效的字母异位词解题思路代码总结 Leetcode 349. 两个数组的交集解题思路代码总结 Leetcode 202. 快乐数解题思路代码总结 Leetcode 1. 两数之和解题思路代码总结 HashSet基本使用:HashMap基本使用: 草稿图网站 java的Deque Le…

java面试题|(1)多线程如何停止一个线程?

在Java中,停止一个线程的方法通常有以下几种: 使用标志位停止线程: 这是一种常见的做法,即通过设置一个标志位,在线程的执行体中检查这个标志位,当标志位满足某个条件时,退出线程执行。 class M…

那位拿了多个Offer的大佬分享了最新Go面经

和大家分享一下我们 Go就业训练营 和 升职加薪星球 中战友们投稿的真实面经。 这是第一篇,计划还会再更新4篇最新Go面经,都是拿到Offer的那种! 欢迎大家关注我的账号,关注之后不迷路。 先秀战绩 虽然不同的公司考察的侧重点不一…

每日必学Linux命令:mv命令

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。 一.命令格式: mv [选项] 源文件或目录 目标文件或目录二&am…

计算机基础(中断、IO)

操作系统 设备交互 CPU 与 IO 设备交互过程 CPU 通过设备控制器(驱动?)与计算机外设进行交互。可以将控制器想象成编程语言中的接口,然后不同地计算机外设的控制器去实现这个接口,CPU 只需要调用接口而无需关注具体地…

2024/3/24 蓝桥杯

P1678 烦恼的高考志愿 二分 import java.util.Arrays; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int m sc.nextInt();int[] a new int[n1];//学校int[] b new int[m…

vue3+ts使用DPlayer播放视频

下载依赖包 npm install dplayer --saveimport引入 import DPlayer from dplayer;使用 dom结构 <template><div class"vedio" id"PlayVideo"></div> </template> const initPlayer () > {// 播放视频state.dp new DPlayer…

如何使用生成式人工智能进行科学文献检索?

在学术写作过程中&#xff0c;查找文献是一个至关重要的步骤。文献检索不仅可以帮助我们了解研究领域的现状和发展&#xff0c;还可以为我们的论文提供理论支持和数据来源。然而&#xff0c;许多学者在查找文献时往往感到困惑和无所适从。本文将详细解释如何查找文献&#xff0…

柯桥专业会计培训|会计实操做账手工账电脑账出纳报税手把手教

开具纸质发票时&#xff0c;经常有小伙伴纠结发票开票人和复核人的问题。现在全国已施行数电票&#xff0c;这个问题还存在吗&#xff1f;一起来看看~ 暂未规定!! 开票人和复核人不应为同一人&#xff01; 目前&#xff0c;全国大部分城市已基本实现数电票的开票试点&#x…

Python学习:循环语句

Python循环语句 概念 循环语句是编程中常用的结构&#xff0c;用于多次执行相同或类似的代码块。Python中有两种主要的循环语句&#xff1a;for循环和while循环。 for循环&#xff1a; for循环用于遍历一个序列&#xff08;如列表、元组、字符串等&#xff09;中的元素&#x…