《深入浅出Pytorch》第五章学习笔记
本文记录博主在学习过程中掌握的新知识。部分解答来自于互联网上的优秀博文,部分是学习于官方文档,也有部分是从书籍中掌握的,由于很少写心得分享,经验不足,若发现问题,请给我留言,谢谢大家!
- Markdown怎么首行缩进2格
 或  //半角的空格
 或  //全角的空格(中文的话,一般就直接用两个 即可)
或  //不断行的空格
- 验证pytorch_gpu能否使用cuda
- nn.RelU(inplace=True)中inplacel的作用
参数:
inplace-选择是否进行覆盖运算
意思是是否将得到的值计算得到的值覆盖之前的值,比如:
X=X+1
即对原值进行操作,然后将得到的值又直接复制到该值中
而不是覆盖运算的例子如:
y=X+1
x=y
这样就需要花费内存去多存储一个变量y
所以
nn.Conv2d(3,64,kernel size=11,stride=4,padding=2),
nn.ReLU(inplace=True)
的意思就是对从上层网络Conv2d中传递下来的tenso直接进行修改,这样能够节省运算内存,不用多存储其他变量。 - 和差积商用英语怎么表示?
- Sum(和)
- difference(差)
- product(积)
- quotient(商) - Pytorch之torch.nn.functional.pad函数详解
torch.nn.functional.pad是PyTorch内置的矩阵填充函数
torch.nn.functional.pad(input, pad, mode,value )
Args:
“”"
input:四维或者五维的tensor Variabe
pad:不同Tensor的填充方式
1.四维Tensor:传入四元素tuple(pad_l, pad_r, pad_t, pad_b),
指的是(左填充,右填充,上填充,下填充),其数值代表填充次数
2.六维Tensor:传入六元素tuple(pleft, pright, ptop, pbottom, pfront, pback),
指的是(左填充,右填充,上填充,下填充,前填充,后填充),其数值代表填充次数
mode: ’constant‘, ‘reflect’ or ‘replicate’三种模式,指的是常量,反射,复制三种模式
value:填充的数值,在"contant"模式下默认填充0,mode=“reflect” or “replicate"时没有value参数
“”” - PyTorch的torch.cat()
1.函数目的
在给定维度上对输入的张量序列seq 进行连接操作。
outputs = torch.cat(inputs, dim=?) → Tensor
2.参数
inputs : 待连接的张量序列,可以是任意相同Tensor类型的python 序列
dim : 选择的扩维, 必须在0到len(inputs[0])之间,沿着此维连接张量序列。
3.重点
①输入数据必须是序列,序列中数据是任意相同的shape的同类型tensor
②维度不可以超过输入数据的任一个张量的维度
4.实例
在深度学习处理图像时,常用的有3通道的RGB彩色图像及单通道的灰度图。张量size为cxhxw,即通道数x图像高度x图像宽度。在用torch.cat拼接两张图像时一般要求图像大小一致而通道数可不一致,即h和w同,c可不同。当然实际有3种拼接方式,另两种好像不常见。比如经典网络结构:U-Net。里面用到4次torch.cat,其中copy and crop操作就是通过torch.cat来实现的。可以看到通过上采样(up-conv 2x2)将原始图像h和w变为原来2倍,再和左边直接copy过来的同样h,w的图像拼接。这样做,可以有效利用原始结构信息。
5.总结
使用torch.cat((A,B),dim)时,除拼接维数dim数值可不同外其余维数数值需相同,方能对齐。