pytorch——神经网络的基本骨架-nn.Module的使用

1.神经网络的基本骨架-nn.Module的使用

nn.Module:所有神经网络模块的基类。

屏幕截图 2024-04-10 193353.png

torch.nn.Module基本使用规则:

import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(1, 20, 5)#卷积
        self.conv2 = nn.Conv2d(20, 20, 5)#卷积

    def forward(self, x): #输入x,经过forward计算,得到输出值 
        x = F.relu(self.conv1(x))  
        return F.relu(self.conv2(x))

对上述forward进行解析:

屏幕截图 2024-04-10 193711.png

简单使用torch.nn构建简单网络

import torch
from torch import nn
#新建神经网络类
class Base(nn.Module):
    def __init__(self) -> None:
        super().__init__()


    def forward(self,input):
        output=input+1
        return output
        
base=Base()
#新建一个输入变量(tensor类型)
input=torch.tensor(1.0)
output=base(input)
print(output)

2.卷积操作(Convolution Layers)

nn.Conv1d对由多个输入平面组成的输入信号应用一维卷积。
nn.Conv2d对由多个输入平面组成的输入信号应用二维卷积。

nn.Conv2d

参数:

  • input – input tensor of shape (minibatch,in_channels,iH,iW)(minibatch,in_channels,i**H,iW)
  • weight – filters of shape (out_channels,in_channels/groups,kH,kW),可以当作卷积核
  • bias
  • stride – 卷积(内)核与输入图像进行卷积操作时在输入图像上移动的步幅。可以是单个数字,也可以是 元组 (sH, sW)。默认值:1 ,表示卷积核每次横移1格,横移完毕后从头纵移一格在横向移动直至计算完毕。如下图:

屏幕截图 2024-04-10 212911.png

上述图片对应代码:

import torch
import torch.nn.functional as F
#定义输入数据(二维),转换为tensor类型
input=torch.tensor([[1,2,0,3,1],
                    [0,1,2,3,1],
                    [1,2,1,0,0],
                    [5,2,3,1,1],
                    [2,1,0,1,1]])

#定义卷积核(二维),转化为tensor类型
kernel=torch.tensor([[1,2,1],
                     [0,1,0],
                     [2,1,0]])

#将input,kernel转换成合适conv2()格式的shape的数据
input=torch.reshape(input,(1,1,5,5))
kernel=torch.reshape(kernel,(1,1,3,3))
#input,kernel转换后尺寸
print(input.shape)
print(kernel.shape)

#使用卷积
output=F.conv2d(input,kernel,stride=1)#stride=1,步径为1
print(output)

output2=F.conv2d(input,kernel,stride=2)#stride=2,步径为2
print(output2)

  • padding –输入两侧的隐式填充,填充值默认为0。可以是字符串 {‘valid’, ‘same’}, 单个数字或元组(padH、padW)。默认值:0 与无填充相同。

    屏幕截图 2024-04-10 214753.png

上述图片对应代码:

import torch
import torch.nn.functional as F
#定义输入数据(二维),转换为tensor类型
input=torch.tensor([[1,2,0,3,1],
                    [0,1,2,3,1],
                    [1,2,1,0,0],
                    [5,2,3,1,1],
                    [2,1,0,1,1]])

#定义卷积核(二维),转化为tensor类型
kernel=torch.tensor([[1,2,1],
                     [0,1,0],
                     [2,1,0]])

#将input,kernel转换成合适conv2()格式的shape的数据
input=torch.reshape(input,(1,1,5,5))
kernel=torch.reshape(kernel,(1,1,3,3))
#input,kernel转换后尺寸
print(input.shape)
print(kernel.shape)

#使用卷积
output3=F.conv2d(input,kernel,stride=1,padding=1)#stride=2,步径为2,padding=1即上下填充1行,左右填充一行,默认填充零
print(output3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值