- os.makedirs(name, mode=0o777, exist_ok=False)
- 作用:
用来创建多层目录(单层用os.mkdir) - 参数:
name:你想创建的目录名
mode:要为目录设置的权限数字模式,默认的模式为 0o777 (八进制)。
exist_ok:是否在目录存在时触发异常。如果exist_ok为False(默认值),则在目标目录已存在的情况下触发FileExistsError异常;如果exist_ok为True,则在目标目录已存在的情况下不会触发FileExistsError异常。
- os.path.exists() 就是判断括号里的文件是否存在的意思,括号内的可以是文件路径。
- sorted(iterable,key=None, reverse=False)
- 参数:
iterable:可迭代对象
key:通过这个参数可以自定义排序逻辑
reverse:指定排序规则,True为降序,False为升序(默认)
- sort(key,reverse)
- 其中
key:接受的是一个只有一个形参的函数,key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序
reverse:接受的是一个bool类型的值 (Ture or False),表示是否颠倒排列顺序,一般默认的是False,注意第一个字母是大写的
-
列表生成式:[d for d in os.listdir(‘.’) :输出当前目录下的所有文件和目录名
-
enumerate():如果对一个列表,既要遍历索引又要遍历元素时
-
os.path.join() 函数用于路径拼接文件路径,可以传入多个路径
1.如果不存在以‘’/’开始的参数,则函数会自动加上\
>>> import os
>>> print(os.path.join('path','abc','yyy'))
path\abc\yyy
2.存在以‘’/’’开始的参数,从最后一个以”/”开头的参数开始拼接,之前的参数全部丢弃。
```python
>>> print('1',os.path.join('/aaa','bbb','ccc.txt'))
1 /aaa\bbb\ccc.txt
>>> print('1',os.path.join('/aaa','bbb','/ccc.txt'))
1 /ccc.txt
3.同时存在以‘’./’与‘’/’’开始的参数,以‘’/’为主,从最后一个以”/”开头的参数开始拼接,之前的参数全部丢弃。
>>> print('2',os.path.join('/aaa','./bbb','ccc.txt'))
2 /aaa\./bbb\ccc.txt
>>> print('2',os.path.join('aaa','./bbb','/ccc.txt'))
2 /ccc.txt
4.只存在以‘’./’开始的参数,会从”./”开头的参数的上一个参数开始拼接。
>>> print('2',os.path.join('aaa','./bbb','ccc.txt'))
2 aaa\./bbb\ccc.txt
-
np.save(file, arr, allow_pickle=True, fix_imports=True)
解释:Save an array to a binary file in NumPy .npy format。以“.npy”格式将数组保存到二进制文件中。
参数:
file 要保存的文件名称,需指定文件保存路径,如果未设置,保存到默认路径。其文件拓展名为.npy
arr 为需要保存的数组,也即把数组arr保存至名称为file的文件中。 -
lambda argument_list: expression表示的是一个lambda函数
这里的argument_list是参数列表
这里的expression是一个关于参数的表达式 -
try-except
try:
<主代码>
except:
<如果主代码出错了,那么该执行的代码>
-
np.stack([arrays1,array2,array3],axis=0) 表示堆叠
第一个是需要堆叠的多个数组,采用列表的形式输入
第二个参数是axis,这个参数表示从哪一个维度进行堆叠以及堆叠的内容,这个维度是相对于堆叠的数组来说的。整个函数的输出为一个新数组。 -
torch.utils.data.DataLoader参数介绍,作用就是将自定义的数据读取接口的输出或者PyTorch已有的数据接口的输入按照batch size分装成Tensor,后续只需要在包装成Variable即可作为模型的输入。
torch.utils.data.DataLoader(
dataset,
batch_size=1,
shuffle=False,
sampler=None,
batch_sampler=None,
num_workers=0,
collate_fn=None,
pin_memory=False,
drop_last=False,
timeout=0,
worker_init_fn=None)
- dataset (Dataset) :加载数据的数据集。
- batch_size (int, optional) : 每个batch加载多少个样本(默认: 1)。
- shuffle (bool, optional) :设置为True时会在每个epoch重新打乱数据(默认: False)。
- sampler (Sampler, optional) : 定义从数据集中提取样本的策略,即生成index的方式,可以顺序也可以乱序。
- num_workers (int, optional): 用多少个子进程加载数据。0:数据将在主进程中加载(默认: 0)
- collate_fn (callable, optional) :将一个batch的数据和标签进行合并操作。
- pin_memory (bool, optional) :设置pin_memory=True,则意味着生成的Tensor数据最开始是属于内存中的锁页内存,这样将内存的Tensor转义到GPU的显存就会更快一些。
- drop_last (bool, optional):如果数据集大小不能被batch size整除,则设置为True后可删除最后一个不完整的batch。如果设为False并且数据集的大小不能被batch size整除,则最后一个batch将更小。(默认: False)
- timeout:用来设置数据读取的超时时间的,但超过这个时间还没读取到数据的话就会报错。
- worker_init_fn(callable, optional):如果不是None,将在播种之后和数据加载之前,对每个worker子进程使用worker id (int in [0, num_workers - 1])作为输入调用。(默认值:None)
- 在训练模型阶段,我们需要处理数据的输入问题和预处理数据问题,Pytorch中有torch.utils.data.Dataset 类和 torch.utils.data.DataLoader 两个类。
- 流程是先把原始数据转变成 torch.utils.data.Dataset 类,随后再把得到的 torch.utils.data.Dataset 类当作一个参数传递给 torch.utils.data.DataLoader 类,得到一个数据加载器,这个数据加载器每次可以返回一个 Batch 的数据供模型训练使用。
-
Batch是批量的大小,就是你训练的时候每次输入多少张图片。
-
Patch是图像块的大小,比如说原图10241024,随机从图中裁剪出256256大小的块,就是patch。更准确来说:“patch”, 指一个二维图片中的其中一个小块, 即一张二维图像中有很多个patch. 正如在神经网络的卷积计算中, 图像并不是一整块图像直接同卷积核进行运算, 而是被分成了很多很多个patch分别同卷积核进行卷积运算, 这些patch的大小取决于卷积核的size. 卷积核每次只查看一个patch, 然后移动到另一个patch, 直到图像分成的所有patch都参与完运算.
-
np.load() 用于打开npz(包含多个数组)、npy(单个数组)文件。
-
numpy.random.randint(low, high=None, size=None, dtype=‘l’) 函数的作用是:返回一个随机整型数,范围从低(包括)到高(不包括),即[low, high)。如果没有写参数high的值,则返回[0,low)的值。
- low: int
生成的数值最低要大于等于low。
(hign = None时,生成的数值要在[0, low)区间内) - high: int (可选)
如果使用这个值,则生成的数值在[low, high)区间。 - size: int or tuple of ints(可选)
输出随机数的尺寸,比如size = (m * n* k)则输出同规模即m * n* k个随机数。默认是None的,仅仅返回满足要求的单一随机数。 - dtype: dtype(可选):
想要输出的格式。如int64、int等等
-
abs() 和numpy.abs() 都是对变量取绝对值,但是这两个函数恰恰在返回值类型上不同,abs()函数返回的类型是int型而numpy.abs()函数返回的类型却是ndarray,而ndarray类型,是numpy库里的数组类型,它是numpy库里的一种类(numpy.ndarray)
-
torch.Tensor() 是Python类,更明确的说,是默认张量类型torch.FloatTensor()的别名,torch.Tensor([1,2]) 会调用Tensor类的构造函数__init__,生成单精度浮点类型的张量。而torch.tensor() 仅仅是Python的函数,函数原型是:
torch.tensor(data, dtype=None, device=None, requires_grad=False)
# 其中data可以是:list, tuple, array, scalar等类型。
# requires_grad表示是否需要求导
- .numpy() 与 .item() ,这两个可以归为一类,是将Tensor变量转换为非Tensor变量。
-
t.numpy()将Tensor变量转换为ndarray变量,其中t是一个Tensor变量,可以是标量,也可以是向量,转换后dtype与Tensor的dtype一致。
-
t.item()将Tensor变量转换为python标量(int float等),其中t是一个Tensor变量,只能是标量,转换后dtype与Tensor的dtype一致。
-
view() 的作用相当于numpy中的reshape,重新定义矩阵的形状。touch.view()方法对张量改变“形状”其实并没有改变张量在内存中真正的形状。
-
torch.squeeze(input, dim = None, out = None) :返回一个tensor
- 当dim不设值时,去掉输入的tensor的所有维度为1的维度;
- 当dim为某一整数(0<=dim<input.dim())时,判断dim维的维度是否为1,若是则去掉,否则不变。
- 当input是一维的时候,squeeze不变
torch.unqueeze(input, dim, out=None) 和squeeze作用相反,unsqueeze()在dim维插入一个维度为1的维,例如原来x是n×m维的,torch.unqueeze(x,0)这返回1×n×m的tensor。
-
torch.contiguous() 方法首先拷贝了一份张量在内存中的地址,然后将地址按照形状改变后的张量的语义进行排列。contiguous方法改变了多维数组在内存中的存储顺序,以便配合view方法使用。
-
OrderedDict OrderedDict 类提供保留键顺序的字典对象,能维护 key-value 对的添加顺序。
-
os.listdir(path) 中有一个参数,就是传入相应的路径,将会返回那个目录下的所有文件名。
-
flatten(dim) 表示,从第dim个维度开始展开,将后面的维度转化为一维.也就是说,只保留dim之前的维度,其他维度的数据全都挤在dim这一维。
-
append() 相当于尾插,给所给的元素后面添加其他值。
-
numpy.zeros() 函数用于生成包含零的数组。numpy.zeros(shape, dtype=float, order=‘C’)