基於Pytorch的網絡設計語法4

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

class Net4(nn.Module):# 從nn.Module  繼承
    def __init__(self):# 在類的初始化函數裏完成曾的構建
        super(Net4,self).__init__()
        #Sequential裏面的順序 就是前往傳播的順序
        #OrderedDict  是有序字典
        self.block=nn.Sequential(
            OrderedDict(
                [
                    ("conv1", nn.Conv2d(3, 32, 3, 1, 1)),
                    ("relu1", nn.ReLU()),
                    ("conv2", nn.Conv2d(32, 64, 3, 1, 1)),
                    ("relu2", nn.ReLU())
                ]
            )
        )

        self.module = nn.Sequential(
            OrderedDict(
                [
                    ("conv3", nn.Conv2d(3, 32, 3, 1, 1)),
                    ("relu3", nn.ReLU())
                ]
            )
        )

    def forward(self,input_x):# 構建前向傳播的流程
        conv_out=self.block(input_x)
        res=conv_out.view(conv_out.size(0),-1)#拉伸處理
        out =self.module(res)
        return  out

gsznet = Net4()
print(gsznet)
if __name__ == '__main__':
    print("XXXXXXXXXXXXXX")

  輸出的內容

C:\Users\ai\AppData\Local\Programs\Python\Python38\python.exe E:\yousan.ai-master\computer_vision\projects\classification\pytorch\simpleconv3\設計網絡.py
Net4(
(block): Sequential(
(conv1): Conv2d(3, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(relu1): ReLU()
(conv2): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(relu2): ReLU()
)
(module): Sequential(
(conv3): Conv2d(3, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(relu3): ReLU()
)
)
XXXXXXXXXXXXXX

進程已結束,退出代碼爲 0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章