最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch構(gòu)建網(wǎng)絡(luò)模型的4種方法

 更新時(shí)間:2018年04月13日 16:52:43   作者:denny402  
這篇文章主要為大家詳細(xì)介紹了pytorch構(gòu)建網(wǎng)絡(luò)模型的4種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

利用pytorch來構(gòu)建網(wǎng)絡(luò)模型有很多種方法,以下簡單列出其中的四種。

假設(shè)構(gòu)建一個(gè)網(wǎng)絡(luò)模型如下:

卷積層--》Relu層--》池化層--》全連接層--》Relu層--》全連接層

首先導(dǎo)入幾種方法用到的包:

import torch
import torch.nn.functional as F
from collections import OrderedDict

第一種方法

# Method 1 -----------------------------------------

class Net1(torch.nn.Module):
  def __init__(self):
    super(Net1, self).__init__()
    self.conv1 = torch.nn.Conv2d(3, 32, 3, 1, 1)
    self.dense1 = torch.nn.Linear(32 * 3 * 3, 128)
    self.dense2 = torch.nn.Linear(128, 10)

  def forward(self, x):
    x = F.max_pool2d(F.relu(self.conv(x)), 2)
    x = x.view(x.size(0), -1)
    x = F.relu(self.dense1(x))
    x = self.dense2(x)
    return x

print("Method 1:")
model1 = Net1()
print(model1)

這種方法比較常用,早期的教程通常就是使用這種方法。

第二種方法

# Method 2 ------------------------------------------
class Net2(torch.nn.Module):
  def __init__(self):
    super(Net2, self).__init__()
    self.conv = torch.nn.Sequential(
      torch.nn.Conv2d(3, 32, 3, 1, 1),
      torch.nn.ReLU(),
      torch.nn.MaxPool2d(2))
    self.dense = torch.nn.Sequential(
      torch.nn.Linear(32 * 3 * 3, 128),
      torch.nn.ReLU(),
      torch.nn.Linear(128, 10)
    )

  def forward(self, x):
    conv_out = self.conv1(x)
    res = conv_out.view(conv_out.size(0), -1)
    out = self.dense(res)
    return out

print("Method 2:")
model2 = Net2()
print(model2)

這種方法利用torch.nn.Sequential()容器進(jìn)行快速搭建,模型的各層被順序添加到容器中。缺點(diǎn)是每層的編號是默認(rèn)的阿拉伯?dāng)?shù)字,不易區(qū)分。

第三種方法:

# Method 3 -------------------------------
class Net3(torch.nn.Module):
  def __init__(self):
    super(Net3, self).__init__()
    self.conv=torch.nn.Sequential()
    self.conv.add_module("conv1",torch.nn.Conv2d(3, 32, 3, 1, 1))
    self.conv.add_module("relu1",torch.nn.ReLU())
    self.conv.add_module("pool1",torch.nn.MaxPool2d(2))
    self.dense = torch.nn.Sequential()
    self.dense.add_module("dense1",torch.nn.Linear(32 * 3 * 3, 128))
    self.dense.add_module("relu2",torch.nn.ReLU())
    self.dense.add_module("dense2",torch.nn.Linear(128, 10))

  def forward(self, x):
    conv_out = self.conv1(x)
    res = conv_out.view(conv_out.size(0), -1)
    out = self.dense(res)
    return out

print("Method 3:")
model3 = Net3()
print(model3)

這種方法是對第二種方法的改進(jìn):通過add_module()添加每一層,并且為每一層增加了一個(gè)單獨(dú)的名字。 

第四種方法:

# Method 4 ------------------------------------------
class Net4(torch.nn.Module):
  def __init__(self):
    super(Net4, self).__init__()
    self.conv = torch.nn.Sequential(
      OrderedDict(
        [
          ("conv1", torch.nn.Conv2d(3, 32, 3, 1, 1)),
          ("relu1", torch.nn.ReLU()),
          ("pool", torch.nn.MaxPool2d(2))
        ]
      ))

    self.dense = torch.nn.Sequential(
      OrderedDict([
        ("dense1", torch.nn.Linear(32 * 3 * 3, 128)),
        ("relu2", torch.nn.ReLU()),
        ("dense2", torch.nn.Linear(128, 10))
      ])
    )

  def forward(self, x):
    conv_out = self.conv1(x)
    res = conv_out.view(conv_out.size(0), -1)
    out = self.dense(res)
    return out

print("Method 4:")
model4 = Net4()
print(model4)

是第三種方法的另外一種寫法,通過字典的形式添加每一層,并且設(shè)置單獨(dú)的層名稱。

完整代碼:

import torch
import torch.nn.functional as F
from collections import OrderedDict

# Method 1 -----------------------------------------

class Net1(torch.nn.Module):
  def __init__(self):
    super(Net1, self).__init__()
    self.conv1 = torch.nn.Conv2d(3, 32, 3, 1, 1)
    self.dense1 = torch.nn.Linear(32 * 3 * 3, 128)
    self.dense2 = torch.nn.Linear(128, 10)

  def forward(self, x):
    x = F.max_pool2d(F.relu(self.conv(x)), 2)
    x = x.view(x.size(0), -1)
    x = F.relu(self.dense1(x))
    x = self.dense2()
    return x

print("Method 1:")
model1 = Net1()
print(model1)


# Method 2 ------------------------------------------
class Net2(torch.nn.Module):
  def __init__(self):
    super(Net2, self).__init__()
    self.conv = torch.nn.Sequential(
      torch.nn.Conv2d(3, 32, 3, 1, 1),
      torch.nn.ReLU(),
      torch.nn.MaxPool2d(2))
    self.dense = torch.nn.Sequential(
      torch.nn.Linear(32 * 3 * 3, 128),
      torch.nn.ReLU(),
      torch.nn.Linear(128, 10)
    )

  def forward(self, x):
    conv_out = self.conv1(x)
    res = conv_out.view(conv_out.size(0), -1)
    out = self.dense(res)
    return out

print("Method 2:")
model2 = Net2()
print(model2)


# Method 3 -------------------------------
class Net3(torch.nn.Module):
  def __init__(self):
    super(Net3, self).__init__()
    self.conv=torch.nn.Sequential()
    self.conv.add_module("conv1",torch.nn.Conv2d(3, 32, 3, 1, 1))
    self.conv.add_module("relu1",torch.nn.ReLU())
    self.conv.add_module("pool1",torch.nn.MaxPool2d(2))
    self.dense = torch.nn.Sequential()
    self.dense.add_module("dense1",torch.nn.Linear(32 * 3 * 3, 128))
    self.dense.add_module("relu2",torch.nn.ReLU())
    self.dense.add_module("dense2",torch.nn.Linear(128, 10))

  def forward(self, x):
    conv_out = self.conv1(x)
    res = conv_out.view(conv_out.size(0), -1)
    out = self.dense(res)
    return out

print("Method 3:")
model3 = Net3()
print(model3)



# Method 4 ------------------------------------------
class Net4(torch.nn.Module):
  def __init__(self):
    super(Net4, self).__init__()
    self.conv = torch.nn.Sequential(
      OrderedDict(
        [
          ("conv1", torch.nn.Conv2d(3, 32, 3, 1, 1)),
          ("relu1", torch.nn.ReLU()),
          ("pool", torch.nn.MaxPool2d(2))
        ]
      ))

    self.dense = torch.nn.Sequential(
      OrderedDict([
        ("dense1", torch.nn.Linear(32 * 3 * 3, 128)),
        ("relu2", torch.nn.ReLU()),
        ("dense2", torch.nn.Linear(128, 10))
      ])
    )

  def forward(self, x):
    conv_out = self.conv1(x)
    res = conv_out.view(conv_out.size(0), -1)
    out = self.dense(res)
    return out

print("Method 4:")
model4 = Net4()
print(model4)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • TensorFlow 顯存使用機(jī)制詳解

    TensorFlow 顯存使用機(jī)制詳解

    今天小編就為大家分享一篇TensorFlow 顯存使用機(jī)制詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python寫一個(gè)簡單的在線編輯器

    Python寫一個(gè)簡單的在線編輯器

    這篇文章主要介紹了如何利用Python寫一個(gè)簡單的在線編輯器,主要通過pywebio程序,實(shí)現(xiàn)了Python的簡陋在線編輯器,需要的小伙伴可以參考一下,希望對你有所幫助
    2022-02-02
  • python tornado開啟多進(jìn)程的幾種方法

    python tornado開啟多進(jìn)程的幾種方法

    本文主要介紹了python tornado開啟多進(jìn)程的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python中列表、字典、元組、集合數(shù)據(jù)結(jié)構(gòu)整理

    Python中列表、字典、元組、集合數(shù)據(jù)結(jié)構(gòu)整理

    這篇文章主要介紹了Python中列表、字典、元組、集合數(shù)據(jù)結(jié)構(gòu)整理,較為詳細(xì)的分析了這幾類數(shù)據(jù)結(jié)構(gòu)的具體用法及相關(guān)技巧,需要的朋友可以參考下
    2014-11-11
  • 用Python復(fù)現(xiàn)二戰(zhàn)德軍enigma密碼機(jī)

    用Python復(fù)現(xiàn)二戰(zhàn)德軍enigma密碼機(jī)

    大家好,本篇文章主要講的是用Python復(fù)現(xiàn)二戰(zhàn)德軍enigma密碼機(jī),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Windows系統(tǒng)下安裝Python的SSH模塊教程

    Windows系統(tǒng)下安裝Python的SSH模塊教程

    這篇文章主要介紹了Windows系統(tǒng)下安裝Python的SSH模塊教程,本文涵蓋了pycrypto、ecdsa、paramiko、OpenSSH、SSH等模塊的安裝,需要的朋友可以參考下
    2015-02-02
  • python讀取文件由于編碼問題失敗匯總以及解決辦法

    python讀取文件由于編碼問題失敗匯總以及解決辦法

    這篇文章主要給大家介紹了關(guān)于python讀取文件由于編碼問題失敗匯總以及解決辦法的相關(guān)資料,文件編碼錯(cuò)誤指的是在Python讀取文件的過程中出現(xiàn)的編碼不匹配的問題,需要的朋友可以參考下
    2023-10-10
  • tensorflow之并行讀入數(shù)據(jù)詳解

    tensorflow之并行讀入數(shù)據(jù)詳解

    今天小編就為大家分享一篇tensorflow之并行讀入數(shù)據(jù)詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 樹莓派采用socket方式文件傳輸(python)

    樹莓派采用socket方式文件傳輸(python)

    這篇文章主要為大家詳細(xì)介紹了樹莓派采用socket方式文件傳輸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python爬蟲使用實(shí)例wallpaper問題記錄

    Python爬蟲使用實(shí)例wallpaper問題記錄

    本文介紹解決中文亂碼的方法,以及Python爬蟲處理數(shù)據(jù)、圖片URL的技巧,包括使用正則表達(dá)式處理字符串、URL替換等,還涉及單線程與多線程的應(yīng)用場景,如電腦壁紙和手機(jī)壁紙爬取,適合進(jìn)行Web數(shù)據(jù)抓取和處理的開發(fā)者參考
    2024-09-09

最新評論

西乌珠穆沁旗| 油尖旺区| 宜君县| 淮南市| 漯河市| 武城县| 从江县| 包头市| 平昌县| 阿克苏市| 郎溪县| 东台市| 准格尔旗| 湘潭市| 兴宁市| 醴陵市| 宁阳县| 江北区| 阳曲县| 万州区| 元谋县| 柘荣县| 调兵山市| 石狮市| 山西省| 沁水县| 沭阳县| 云安县| 祥云县| 库尔勒市| 磴口县| 宁夏| 双峰县| 揭西县| 子洲县| 咸丰县| 台北县| 舟山市| 云安县| 桃园市| 长丰县|