MAML代码阅读笔记-Pytorch
-
nn.Parameter()
: 可以把这个函数理解为类型转换函数,将一个不可训练的类型Tensor
转换成可以训练的类型parameter
并将这个parameter
绑定到这个module
里面。这个函数的目的也是想让某些变量在学习的过程中不断的修改其值以达到最优化。
-
nn.ParameterList()
:这个类实际上是将一个Parameter
的List
转为ParameterList
,如下例所示[nn.Parameter(torch.randn(2, 2)) for i in range(3)]
类型是List
,List
的每个元素是Parameter
,然后这个List
作为参数传入这个类构造ParameterList
类型。
ParameterList
输入一定是一个Parameter
的List
,其他类型会报错,在注册时候就会提示元素不是Parameter
类型。
-
*[1,2]or*(1,2)
:在列表前加*号,会将列表拆分成一个一个的独立元素,不光是列表、元组、字典,由numpy生成的向量也可以拆分。
-
torch.nn.init.kaiming_normal_()
:使用正态分布对输入张量进行赋值。
-
torch.nn.Module.extra_repr()
:设置模块的额外表示信息.为了能够打印用户定制化的额外信息,你需要在你的神经网络模块中重新实现这个方法. 单行字符串或多行字符串都可以用在这个函数中。
-
torch.no_grad()
:强制之后的内容不需要计算图构建,即表示张量的计算过程中无需计算梯度。
-
tensor.grad.zero_()
:清除tensor
的梯度值,也就是重新赋值为0。
-
torch.autograd.grad(outputs=y, inputs=x)
:pytorch提供两种求梯度的方法,backward()
和torch.autograd.grad()
,这两种方法的区别在于前者是给叶子节点填充.grad
字段,而后者是直接返回梯度。
-
fast_weights = list(map(lambda p: p[1] - self.update_lr * p[0], zip(grad, self.net.parameters())))
:使用梯度下降更新网络参数一种写法。
-
filter()
:用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。 语法:filter(function, iterable)
-
numpy.random.choice(a, size=None, replace=True, p=None)
:从a(只要是ndarray都可以,但必须是一维的)中随机抽取数字,并组成指定大小(size)的数组;replace:True表示可以取相同数字,False表示不可以取相同数字;数组p:与数组a相对应,表示取数组a中每个元素的概率,默认为选取每个元素的概率相同。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END