在看过很多博客的时候发现了一个用法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()详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
问题内容: 我是pytorch的新手,我很难理解其工作原理。 我已经浏览了https://pytorch.org/docs/stable/nn.html中的文档,但可能没有什么意义。 有人可以帮忙吗? 我正在处理的代码段: 问题答案: 我将为您分解。如您所知,张量是多维矩阵。原始形式的参数是张量,即多维矩阵。它是变量类的子类。 与模块关联时,会出现变量和参数之间的差异。当参数与作为模型属性的模块关
本文向大家介绍pytorch常见的Tensor类型详解,包括了pytorch常见的Tensor类型详解的使用技巧和注意事项,需要的朋友参考一下 Tensor有不同的数据类型,每种类型分别有对应CPU和GPU版本(HalfTensor除外)。默认的Tensor是FloatTensor,可通过torch.set_default_tensor_type修改默认tensor类型(如果默认类型为GPU te
本文向大家介绍详解PyTorch中Tensor的高阶操作,包括了详解PyTorch中Tensor的高阶操作的使用技巧和注意事项,需要的朋友参考一下 条件选取:torch.where(condition, x, y) → Tensor 返回从 x 或 y 中选择元素的张量,取决于 condition 操作定义: 举个例子: 把张量中的每个数据都代入条件中,如果其大于 0 就得出 a,其它情况就得出
本文向大家介绍详解pytorch 0.4.0迁移指南,包括了详解pytorch 0.4.0迁移指南的使用技巧和注意事项,需要的朋友参考一下 总说 由于pytorch 0.4版本更新实在太大了, 以前版本的代码必须有一定程度的更新. 主要的更新在于 Variable和Tensor的合并., 当然还有Windows的支持, 其他一些就是支持scalar tensor以及修复bug和提升性能吧. Var
主要内容:一、SPI是什么?,Services里的SPI,Dubbo.internal里的SPI一、SPI是什么? SPI是中间件设计不可缺少的一项,SPI能提高应用的可插拔性,SPI的英文全称: Service Provider Implementation, 我们可以在META-INF目录里配置SPI, ServiceLoader会根据配置来找到接口的实现,那Dubbo里的@SPI又是什么呢? Dubbo的Common模块里,定义了一个@SPI注解,该注解
本文向大家介绍pytorch 常用线性函数详解,包括了pytorch 常用线性函数详解的使用技巧和注意事项,需要的朋友参考一下 Pytorch的线性函数主要封装了Blas和Lapack,其用法和接口都与之类似。 常用的线性函数如下: 函数 功能 trace 对角线元素之和(矩阵的迹) diag 对角线元素 triu/tril 矩阵的上三角/下三角,可指定偏移量 mm/bmm 矩阵乘法,batch的