关于深度学习中的一些问题

  1. os.makedirs(name, mode=0o777, exist_ok=False)
  • 作用:
    用来创建多层目录(单层用os.mkdir)
  • 参数:
    name:你想创建的目录名
    mode:要为目录设置的权限数字模式,默认的模式为 0o777 (八进制)。
    exist_ok:是否在目录存在时触发异常。如果exist_ok为False(默认值),则在目标目录已存在的情况下触发FileExistsError异常;如果exist_ok为True,则在目标目录已存在的情况下不会触发FileExistsError异常。
  1. os.path.exists() 就是判断括号里的文件是否存在的意思,括号内的可以是文件路径。
  2. sorted(iterable,key=None, reverse=False)
  • 参数:
    iterable:可迭代对象
    key:通过这个参数可以自定义排序逻辑
    reverse:指定排序规则,True为降序,False为升序(默认)
  1. sort(key,reverse)
  • 其中
    key:接受的是一个只有一个形参的函数,key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序
    reverse:接受的是一个bool类型的值 (Ture or False),表示是否颠倒排列顺序,一般默认的是False,注意第一个字母是大写的
  1. 列表生成式:[d for d in os.listdir(‘.’) :输出当前目录下的所有文件和目录名

  2. enumerate():如果对一个列表,既要遍历索引又要遍历元素时

  3. 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
  1. 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的文件中。

  2. lambda argument_list: expression表示的是一个lambda函数
    这里的argument_list是参数列表
    这里的expression是一个关于参数的表达式

  3. try-except

try:
    <主代码>
except:
    <如果主代码出错了,那么该执行的代码>
  1. np.stack([arrays1,array2,array3],axis=0) 表示堆叠
    第一个是需要堆叠的多个数组,采用列表的形式输入
    第二个参数是axis,这个参数表示从哪一个维度进行堆叠以及堆叠的内容,这个维度是相对于堆叠的数组来说的。整个函数的输出为一个新数组。

  2. 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)
  1. 在训练模型阶段,我们需要处理数据的输入问题预处理数据问题,Pytorch中有torch.utils.data.Dataset 类和 torch.utils.data.DataLoader 两个类。
  • 流程是先把原始数据转变成 torch.utils.data.Dataset 类,随后再把得到的 torch.utils.data.Dataset 类当作一个参数传递给 torch.utils.data.DataLoader 类,得到一个数据加载器,这个数据加载器每次可以返回一个 Batch 的数据供模型训练使用。
  1. Batch是批量的大小,就是你训练的时候每次输入多少张图片。

  2. Patch是图像块的大小,比如说原图10241024,随机从图中裁剪出256256大小的块,就是patch。更准确来说:“patch”, 指一个二维图片中的其中一个小块, 即一张二维图像中有很多个patch. 正如在神经网络的卷积计算中, 图像并不是一整块图像直接同卷积核进行运算, 而是被分成了很多很多个patch分别同卷积核进行卷积运算, 这些patch的大小取决于卷积核的size. 卷积核每次只查看一个patch, 然后移动到另一个patch, 直到图像分成的所有patch都参与完运算.

  3. np.load() 用于打开npz(包含多个数组)、npy(单个数组)文件。

  4. 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等等
  1. abs()numpy.abs() 都是对变量取绝对值,但是这两个函数恰恰在返回值类型上不同,abs()函数返回的类型是int型而numpy.abs()函数返回的类型却是ndarray,而ndarray类型,是numpy库里的数组类型,它是numpy库里的一种类(numpy.ndarray)

  2. 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表示是否需要求导
  1. .numpy().item() ,这两个可以归为一类,是将Tensor变量转换为非Tensor变量。
  • t.numpy()将Tensor变量转换为ndarray变量,其中t是一个Tensor变量,可以是标量,也可以是向量,转换后dtype与Tensor的dtype一致。

  • t.item()将Tensor变量转换为python标量(int float等),其中t是一个Tensor变量,只能是标量,转换后dtype与Tensor的dtype一致。

  1. view() 的作用相当于numpy中的reshape,重新定义矩阵的形状。touch.view()方法对张量改变“形状”其实并没有改变张量在内存中真正的形状。

  2. 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。

  1. torch.contiguous() 方法首先拷贝了一份张量在内存中的地址,然后将地址按照形状改变后的张量的语义进行排列。contiguous方法改变了多维数组在内存中的存储顺序,以便配合view方法使用。

  2. OrderedDict OrderedDict 类提供保留键顺序的字典对象,能维护 key-value 对的添加顺序。

  3. os.listdir(path) 中有一个参数,就是传入相应的路径,将会返回那个目录下的所有文件名。

  4. flatten(dim) 表示,从第dim个维度开始展开,将后面的维度转化为一维.也就是说,只保留dim之前的维度,其他维度的数据全都挤在dim这一维。

  5. append() 相当于尾插,给所给的元素后面添加其他值。

  6. numpy.zeros() 函数用于生成包含零的数组。numpy.zeros(shape, dtype=float, order=‘C’)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值