亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PyTorch之nn.ReLU與F.ReLU的區(qū)別介紹

 更新時間:2020年06月27日 11:28:57   作者:鵲踏枝-碼農(nóng)  
這篇文章主要介紹了PyTorch之nn.ReLU與F.ReLU的區(qū)別介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

import torch.nn as nn
import torch.nn.functional as F
import torch.nn as nn
 
class AlexNet_1(nn.Module):
 
  def __init__(self, num_classes=n):
    super(AlexNet, self).__init__()
    self.features = nn.Sequential(
      nn.Conv2d(3, 64, kernel_size=3, stride=2, padding=1),
      nn.BatchNorm2d(64),
      nn.ReLU(inplace=True),
     )
 
  def forward(self, x):
    x = self.features(x)
 
class AlexNet_2(nn.Module):
 
  def __init__(self, num_classes=n):
    super(AlexNet, self).__init__()
    self.features = nn.Sequential(
      nn.Conv2d(3, 64, kernel_size=3, stride=2, padding=1),
      nn.BatchNorm2d(64),
     )
 
  def forward(self, x):
    x = self.features(x)
    x = F.ReLU(x)

在如上網(wǎng)絡(luò)中,AlexNet_1與AlexNet_2實(shí)現(xiàn)的結(jié)果是一致的,但是可以看到將ReLU層添加到網(wǎng)絡(luò)有兩種不同的實(shí)現(xiàn),即nn.ReLU和F.ReLU兩種實(shí)現(xiàn)方法。

其中nn.ReLU作為一個層結(jié)構(gòu),必須添加到nn.Module容器中才能使用,而F.ReLU則作為一個函數(shù)調(diào)用,看上去作為一個函數(shù)調(diào)用更方便更簡潔。具體使用哪種方式,取決于編程風(fēng)格。

在PyTorch中,nn.X都有對應(yīng)的函數(shù)版本F.X,但是并不是所有的F.X均可以用于forward或其它代碼段中,因?yàn)楫?dāng)網(wǎng)絡(luò)模型訓(xùn)練完畢時,在存儲model時,在forward中的F.X函數(shù)中的參數(shù)是無法保存的。

也就是說,在forward中,使用的F.X函數(shù)一般均沒有狀態(tài)參數(shù),比如F.ReLU,F(xiàn).avg_pool2d等,均沒有參數(shù),它們可以用在任何代碼片段中。

補(bǔ)充知識:pytorch小知識點(diǎn)——in-place operation

一、什么是in-place

在pytorch的很多函數(shù)中經(jīng)??吹絠n-place選項(xiàng),具體是什么意思一直一知半解。這次專門來學(xué)習(xí)一下,in-place operation在pytorch中是指改變一個tensor的值的時候,不經(jīng)過復(fù)制操作,而是直接在原來的內(nèi)存上改變它的值??梢园阉Q為原地操作符。

在pytorch中經(jīng)常加后綴“_”來代表原地in-place operation,比如說.add_() 或者.scatter()。我們可以將in_place操作簡單的理解類似于python中的"+=","-="等操作。

舉個例子,下面是正常的加操作,執(zhí)行結(jié)束后x的值沒有變化

import torch
x = torch.rand(2)
x
Out[3]: tensor([0.3486, 0.2924])  #<-----這是x初始值
 
y = torch.rand(2)
y
Out[5]: tensor([0.6301, 0.0101])  #<-----這是y初始值
x.add(y)
Out[6]: tensor([0.9788, 0.3026])   #<-----這是x+y的結(jié)果
x
Out[7]: tensor([0.3486, 0.2924])  #<-----這是執(zhí)行操作之后x的值
y
Out[8]: tensor([0.6301, 0.0101])   #<-----這是執(zhí)行操作之后y的值

我們可以發(fā)現(xiàn),在正常操作之后原操作數(shù)的值不會發(fā)生變化。

下面我們來看看in_place操作

import torch
x = torch.rand(2)
x
Out[3]: tensor([0.3486, 0.2924])  #<-----這是x初始值
y = torch.rand(2)
y
Out[5]: tensor([0.6301, 0.0101])  #<-----這是y初始值
x.add_(y)
Out[9]: tensor([0.9788, 0.3026])  #<-----這是x+y結(jié)果
x
Out[10]: tensor([0.9788, 0.3026]) #<-----這是操作后x的值
y
Out[11]: tensor([0.6301, 0.0101])  #<-----這是操作后y的值

通過對比可以發(fā)現(xiàn),in_place操作之后,原操作數(shù)等于表達(dá)式計算結(jié)果。也就是說將計算結(jié)果賦給了原操作數(shù)。

二、不能使用in-place的情況

對于 requires_grad=True 的 葉子張量(leaf tensor) 不能使用 inplace operation

對于在 求梯度階段需要用到的張量 不能使用 inplace operation

以上這篇PyTorch之nn.ReLU與F.ReLU的區(qū)別介紹就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python獲取當(dāng)前日期和時間的方法

    python獲取當(dāng)前日期和時間的方法

    這篇文章主要介紹了python獲取當(dāng)前日期和時間的方法,涉及Python操作日期與時間的相關(guān)技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-04-04
  • 利用Python制作動態(tài)排名圖的實(shí)現(xiàn)代碼

    利用Python制作動態(tài)排名圖的實(shí)現(xiàn)代碼

    這篇文章主要介紹了利用Python制作動態(tài)排名圖的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • PyQt5中QButtonGroup的用法解析與案例分享

    PyQt5中QButtonGroup的用法解析與案例分享

    在PyQt5中,QButtonGroup是一個非常有用的類,它提供了一個抽象的按鈕容器,允許開發(fā)者將多個按鈕劃分為一個組,本教程將詳細(xì)介紹QButtonGroup的創(chuàng)建、使用、信號槽連接以及在實(shí)際項(xiàng)目中的應(yīng)用案例,需要的朋友可以參考下
    2024-08-08
  • python調(diào)用golang中函數(shù)方法

    python調(diào)用golang中函數(shù)方法

    由于simhash方法有多種實(shí)現(xiàn)方式,現(xiàn)python中simhash方法與golang中的不一樣,需要兩者代碼生成結(jié)果保持一致,故采用python中的代碼調(diào)用golang編譯的so文件來實(shí)現(xiàn),需要的朋友可以參考下
    2024-02-02
  • 如何計算 tensorflow 和 pytorch 模型的浮點(diǎn)運(yùn)算數(shù)

    如何計算 tensorflow 和 pytorch 模型的浮點(diǎn)運(yùn)算數(shù)

    FLOPs 是 floating point operations 的縮寫,指浮點(diǎn)運(yùn)算數(shù),可以用來衡量模型/算法的計算復(fù)雜度。本文主要討論如何在 tensorflow 1.x, tensorflow 2.x 以及 pytorch 中利用相關(guān)工具計算對應(yīng)模型的 FLOPs,需要的朋友可以參考下
    2022-11-11
  • python字符串分割及字符串的一些常規(guī)方法

    python字符串分割及字符串的一些常規(guī)方法

    這篇文章主要介紹了python字符串分割以及字符串的一些常規(guī)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 最新評論