时间:2021-05-22
在看过很多博客的时候发现了一个用法self.v = torch.nn.Parameter(torch.FloatTensor(hidden_size)),首先可以把这个函数理解为类型转换函数,将一个不可训练的类型Tensor转换成可以训练的类型parameter并将这个parameter绑定到这个module里面(net.parameter()中就有这个绑定的parameter,所以在参数优化的时候可以进行优化的),所以经过类型转换这个self.v变成了模型的一部分,成为了模型中根据训练可以改动的参数了。
使用这个函数的目的也是想让某些变量在学习的过程中不断的修改其值以达到最优化。
出现这个函数的地方
在concat注意力机制中,权值V是不断学习的所以要是parameter类型,不直接使用一个torch.nn.Linear()可能是因为学习的效果不好。
通过做下面的实验发现,linear里面的weight和bias就是parameter类型,且不能够使用tensor类型替换,还有linear里面的weight甚至可能通过指定一个不同于初始化时候的形状进行模型的更改。
self.gamma被绑定到模型中了,所以可以在训练的时候优化
以上这篇PyTorch里面的torch.nn.Parameter()详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
路径:https://pytorch.org/docs/master/nn.init.html#nn-init-doc初始化函数:torch.nn.init#-
pytorch中的权值初始化官方论坛对weight-initilzation的讨论torch.nn.Module.apply(fn)torch.nn.Modul
卷积在pytorch中有两种实现,一种是torch.nn.Conv2d(),一种是torch.nn.functional.conv2d(),这两种方式本质都是执
如何在pytorch中使用word2vec训练好的词向量torch.nn.Embedding()这个方法是在pytorch中将词向量和词对应起来的一个方法.一般
最近在刚从tensorflow转入pytorch,对于自定义的nn.Module碰到了个问题,即使把模组modle=Model().cuda(),里面的子Mod