pytorch自定義loss函式的幾種方法

2022-07-21 21:09:27 字數 714 閱讀 6016

1. 讓張量使用variable

型別,如下所示

1

from torch.autograd import

variable

23 inp = torch.zeros(2, 3)

4 inp =variable(inp).type(torch.longtensor)

5print(inp)

variable型別包裝了tensor型別,並提供了backward()介面

使用variable型別

的好處是,可以按照**公式來直接使用,並在做張量運算之後,使用繼承的backward()直接進行反向傳播

2.自定義類繼承nn.module

1

class

custommseloss(nn.module):

2def

__init__

(self):

3 super().__init__()4

5def

forward(self, x, y):

6return torch.mean(torch.pow((x - y), 2))

這種方法結構化程度高,在開發給使用者使用時,由於不知道使用者的tensor是否是variable型別,採用該方法可以減少問題。

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 自定義層

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

自定義實現strcmp,atoi,itoa函式

1.mystrcmp函式,字串比較 abc x abc abc ab aa 第乙個大於第二個則返回正數,相等返回0,第乙個小於第二個返回負數。include include intmystrcmp const char str1,const char str2 int tmp 0 while tmp...