1.Containers

首先查看官方文档中nn.module骨架,其中有六个模块。
pytorch神经网络基本骨架nn.module的使用-LMLPHP

1.1Module

pytorch神经网络基本骨架nn.module的使用-LMLPHP

import torch.nn as nn
import torch.nn.functional as F
class Module(nn.Module):
    def __init__(self):
        super(Module, self).__init__()
        self.conv1=nn.Conv2d(1, 20, 5)
        self.conv2=nn.Conv2d(20, 20,5)

    def forward(self,x):
        x=F.relu(self.conv1(x))
        return F.relu(self.conv2(x))

这其中nn.Module的构造函数,一直到super这一行都是一种固定搭配,在下面两行中conv1和conv2是自定义的卷积。
pytorch神经网络基本骨架nn.module的使用-LMLPHP
分析最后这个forward(self,x)
输入一个x:
首先是进行了卷积
然后是进行非线性激活函数Relu
再然后又进行了卷积
最后再进行了一次非线性激活函数Relu.
输出。

import torch
import torch.nn as nn
import torch.nn.functional as F
class Module(nn.Module):
    def __init__(self):
        super(Module, self).__init__()

    def forward(self,x):
        y=x+1
        return F.relu(y)
yang=Module()
x=torch.Tensor([1.0])
output=yang(x)
print(output)

pytorch神经网络基本骨架nn.module的使用-LMLPHP
我们设置一个简单的程序来使用这个框架,可以看到,在输入张量x后,经过非线性激活函数,最后输出了张量2.0。以一种及其简单的过程走完了框架,更多的内容只需要对其进行填充即可。

2.Convolution卷积层

2.1.CONV2D

先看官方文档的描述和解释
pytorch神经网络基本骨架nn.module的使用-LMLPHP

这里设置一个卷积核,和一个5x5的图像数据
pytorch神经网络基本骨架nn.module的使用-LMLPHP
我们将其进行相乘后输出第一个值:10.当Stride为1的时候移动的步数(格子数量)为1.
pytorch神经网络基本骨架nn.module的使用-LMLPHP

import torch
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]])

kernel = torch.tensor([[1,2,1],
                       [0,1,0],
                       [2,1,0]])
input=torch.reshape(input,(1,1,5,5))
kernel=torch.reshape(kernel,(1,1,3,3))
output=torch.nn.functional.conv2d(input=input,weight=kernel,stride=1)
print(output)

pytorch神经网络基本骨架nn.module的使用-LMLPHP
这里的输出就是卷积后的值。

11-21 06:51