pytorch之torch.nn.Identity()的作用及解释
作者:会写代码的孙悟空
这篇文章主要介绍了pytorch之torch.nn.Identity()的作用及解释,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
torch.nn.Identity()的作用及解释
class Identity(Module):
r"""A placeholder identity operator that is argument-insensitive.
Args:
args: any argument (unused)
kwargs: any keyword argument (unused)
Examples::
>>> m = nn.Identity(54, unused_argument1=0.1, unused_argument2=False)
>>> input = torch.randn(128, 20)
>>> output = m(input)
>>> print(output.size())
torch.Size([128, 20])
"""
def __init__(self, *args, **kwargs):
super(Identity, self).__init__()
def forward(self, input: Tensor) -> Tensor:
return input通过阅读源码可以看到,identity模块不改变输入。
直接return input
一种编码技巧吧,比如我们要加深网络,有些层是不改变输入数据的维度的,
在增减网络的过程中我们就可以用identity占个位置,这样网络整体层数永远不变,
看起来可能舒服一些,
可能理解的不到位。。。。
Pytorch-torch.nn.identity()方法

identity模块不改变输入,直接return input
一种编码技巧吧,比如我们要加深网络,有些层是不改变输入数据的维度的,在增减网络的过程中我们就可以用identity占个位置,这样网络整体层数永远不变,
应用:
例如此时:如果此时我们使用了se_layer,那么就SELayer(dim),否则就输入什么就输出什么(什么都不做)
m = nn.Identity(54, unused_argument1=0.1, unused_argument2=False) input = torch.randn(128, 20) output = m(input) print(output.size()) >> torch.Size([128, 20])
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
