当前位置:主页 > python教程 > Pytorch 实现自定义参数层的例子

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

发布:2020-07-09 22:35:31 169


给大家整理了相关的编程文章,网友边俊楠根据主题投稿了本篇教程内容,涉及到Pytorch、自定义、参数层、Pytorch 实现自定义参数层的例子相关内容,已被508网友关注,涉猎到的知识点内容可以在下方电子书获得。

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训练实例与性能对比

    发布:2020-01-16

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


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

    发布:2020-03-05

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


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

    发布:2019-06-06

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


  • PyTorch源码解读之torchvision.models

    发布:2020-01-27

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


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

    发布:2019-11-02

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


网友讨论