Pytorch 實現自定義引數層的例子

2022-10-04 16:27:20 字數 2059 閱讀 3407

注意,一般官方介面都帶有可導功能,如果你實現的層不具有可導功能,就需要自己實現梯度的反向傳遞。

官方linear層:

class linear(module):

def __init__(self, in_features,www.cppcns.com out_features, bias=true):

super(linear, self).__init__()

self.in_features = in_features

self.out_features = out_features

s程式設計客棧elf.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_pwww.cppcns.comarameters()

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, stdvwww.cppcns.com)

def forward(self, input):

x = input * self.weight

if self.bias is not none:

x = x + self.bias

return x

本文標題: pytorch 實現自定義引數層的例子

本文位址:

PyTorch 自定義層

與使用module類構造模型類似。下面的centeredlayer類通過繼承module類自定義了乙個將輸入減掉均值後輸出的層,並將層的計算定義在了forward函式裡。這個層裡不含模型引數。class mydense nn.module def init self super mydense,se...

Pytorch自定義引數

如果想要靈活地使用模型,可能需要自定義引數,比如 class net nn.module def init self super net,self init self.a torch.randn 2 3 requires grad true self.b nn.linear 2,2 defforwa...

PyTorch 自定義層(區別於自定義模型)

博主在學習三值神經網路時,使用了lenet 5模型,程式設計 需要對lenet 5模型中的卷積層與全連線層進行自定義,搜尋他人方法後,博主產生了乙個疑問,絕大多數提供的自定義層方法都是繼承nn.module模型,而這方法據說是官方提供 官網 pytorch 自定義線性層 如下 class linea...