Pytorch 实现自定义参数层实例代码

  • 更新时间:2020-07-09 22:35:31
  • 编辑:隗文栋
本站精选了一篇相关的编程文章,网友权高峰根据主题投稿了本篇教程内容,涉及到Pytorch、自定义、参数层、Pytorch 实现自定义参数层的例子相关内容,已被516网友关注,涉猎到的知识点内容可以在下方电子书获得。
  • PyTorch深度学习 / 28 MB 推荐度:
  • 深度学习入门之PyTorch / 59.3 MB 推荐度:
  • Custom Cursor / 407 KB 推荐度:
  • ModHeader / 267 KB 推荐度:
  • 深度学习之PyTorch实战计算机视觉 / 174 MB 推荐度:
  • Pytorch 实现自定义参数层的例子

    注意,一般官方接口都带有可导功能,如果你实现的层不具有可导功能,就需要自己实现梯度的反向传递。

    官方Linear层:

    class Linear(Module):
      def __init__(self, in_features, out_features, bias=True):
        super(Linear, self).__init__()
        self.in_features = in_features
        self.out_features = out_features
        self.weight = Parameter(torch.Tensor(out_features, in_features))
        if bias:
          self.bias = Parameter(torch.Tensor(out_features))
        else:
          self.register_parameter('bias', None)
        self.reset_parameters()
    
      def reset_parameters(self):
        stdv = 1. / math.sqrt(self.weight.size(1))
        self.weight.data.uniform_(-stdv, stdv)
        if self.bias is not None:
          self.bias.data.uniform_(-stdv, stdv)
    
      def forward(self, input):
        return F.linear(input, self.weight, self.bias)
    
      def extra_repr(self):
        return 'in_features={}, out_features={}, bias={}'.format(
          self.in_features, self.out_features, self.bias is not None
        )
    

    实现view层

    class Reshape(nn.Module):
      def __init__(self, *args):
        super(Reshape, self).__init__()
        self.shape = args
    
      def forward(self, x):
        return x.view((x.size(0),)+self.shape)
    

    实现LinearWise层

    class LinearWise(nn.Module):
      def __init__(self, in_features, bias=True):
        super(LinearWise, self).__init__()
        self.in_features = in_features
    
        self.weight = nn.Parameter(torch.Tensor(self.in_features))
        if bias:
          self.bias = nn.Parameter(torch.Tensor(self.in_features))
        else:
          self.register_parameter('bias', None)
        self.reset_parameters()
    
      def reset_parameters(self):
        stdv = 1. / math.sqrt(self.weight.size(0))
        self.weight.data.uniform_(-stdv, stdv)
        if self.bias is not None:
          self.bias.data.uniform_(-stdv, stdv)
    
      def forward(self, input):
        x = input * self.weight
        if self.bias is not None:
          x = x + self.bias
        return x
    

    以上这篇Pytorch 实现自定义参数层的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

    相关教程

    • pytorch多GPU训练实例与性能对比

      今天小编就为大家分享一篇关于pytorch多GPU训练实例与性能对比分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

      发布时间:2020-01-16

    • 详解pytorch 调整某一维度数据顺序

      今天小编就为大家分享一篇pytorch 调整某一维度数据顺序的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

      发布时间:2020-03-05

    • pytorch按图像的顺序读取方法实例

      今天小编就为大家分享一篇使用pytorch进行图像的顺序读取方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

      发布时间:2019-06-06

    • PyTorch源码解读之torchvision.models

      今天小编就为大家分享一篇关于PyTorch源码解读之torchvision.models,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

      发布时间:2020-01-27

    • PyTorch线性回归和逻辑回归的相关实例知识点

      这篇文章主要介绍了PyTorch线性回归和逻辑回归实战示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

      发布时间:2019-11-02

    用户留言