1、argparse.ArgumentParser()用法解析
参考如下:argparse.ArgumentParser()用法解析 - 知乎 (zhihu.com)
2、CfgNode用法解析
3、 DataLoader
dataloader为数据提供一个迭代器,把数据分批输入网络的进行训练。
**工作机制:**在dataloader按照batch进行取数据的时候, 是取出大小等同于batch size的index列表,然后将列表列表中的index输入到dataset的getitem()函数中,取出该index对应的数据,最后, 对每个index对应的数据进行堆叠,就形成了一个batch的数据。
4、collate_fn函数
参考如下:python tips003 ------DataLoader的collate_fn参数使用详解 - 知乎 (zhihu.com)
5、sampler函数
sampler
: 是从dataset
中取数据的策略,如果DataLoader
不指定sampler的话,它就会按顺序依次喂入数据。
参考如下:Pytorch中的sampler_pytorch sampler-CSDN博客
6、enumerate()函数
enumerate()
是 Python 的一个内置函数,用于在 遍历可迭代对象(如列表、元组、字符串等) 时,同时获取元素及其对应的索引(位置)。
实际操作过程
-
遍历可迭代对象 :
enumerate()
逐个取出元素。 -
自动生成索引 :默认从 0 开始,每次索引值加 1(或根据
start
参数设置)。 -
返回索引和值 :以
(index, value)
形式返回当前索引和值。
7、使用 iter()
和 next()
的特点
-
可以逐个获取元素:
-
iter()
将可迭代对象转换为迭代器后,可以通过next()
获取每个元素。 -
每调用一次
next()
,迭代器会返回下一个元素,直到没有元素时抛出StopIteration
异常。
-
-
迭代器是一次性的:
- 一旦迭代器遍历完所有元素,不能重置或重新遍历。如果你希望再次遍历,可以重新生成一个新的迭代器。
还可以通过自定义类来创建迭代器对象,只要该类实现了 __iter__()
和 __next__()
方法:
-
__iter__()
返回迭代器对象本身(通常是类的实例)。 -
__next__()
返回下一个元素,直到抛出StopIteration
异常表示结束。