欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用pytorch的nn.Module構(gòu)造簡單全鏈接層實(shí)例

 更新時(shí)間:2020年01月14日 17:17:49   作者:AItitanic  
今天小編就為大家分享一篇用pytorch的nn.Module構(gòu)造簡單全鏈接層實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

python版本3.7,用的是虛擬環(huán)境安裝的pytorch,這樣隨便折騰,不怕影響其他的python框架

1、先定義一個(gè)類Linear,繼承nn.Module

import torch as t
from torch import nn
from torch.autograd import Variable as V
 
class Linear(nn.Module):

  '''因?yàn)閂ariable自動(dòng)求導(dǎo),所以不需要實(shí)現(xiàn)backward()'''
  def __init__(self, in_features, out_features):
    super().__init__()
    self.w = nn.Parameter( t.randn( in_features, out_features ) ) #權(quán)重w 注意Parameter是一個(gè)特殊的Variable
    self.b = nn.Parameter( t.randn( out_features ) )   #偏值b
  
  def forward( self, x ): #參數(shù) x 是一個(gè)Variable對(duì)象
    x = x.mm( self.w )
    return x + self.b.expand_as( x ) #讓b的形狀符合 輸出的x的形狀

2、驗(yàn)證一下

layer = Linear( 4,3 )
input = V ( t.randn( 2 ,4 ) )#包裝一個(gè)Variable作為輸入
out = layer( input )
out

#成功運(yùn)行,結(jié)果如下:

tensor([[-2.1934, 2.5590, 4.0233], [ 1.1098, -3.8182, 0.1848]], grad_fn=<AddBackward0>)

下面利用Linear構(gòu)造一個(gè)多層網(wǎng)絡(luò)

class Perceptron( nn.Module ):
  def __init__( self,in_features, hidden_features, out_features ):
    super().__init__()
    self.layer1 = Linear( in_features , hidden_features )
    self.layer2 = Linear( hidden_features, out_features )
  def forward ( self ,x ):
    x = self.layer1( x )
    x = t.sigmoid( x ) #用sigmoid()激活函數(shù)
    return self.layer2( x )

測試一下

perceptron = Perceptron ( 5,3 ,1 )
 
for name,param in perceptron.named_parameters(): 
  print( name, param.size() )

輸出如預(yù)期:

layer1.w torch.Size([5, 3])
layer1.b torch.Size([3])
layer2.w torch.Size([3, 1])
layer2.b torch.Size([1])

以上這篇用pytorch的nn.Module構(gòu)造簡單全鏈接層實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論