【Pytorch】小土堆自学日记(六)

目录

一、神经网络的基本骨架-nn.Moudle的使用

1.torch.nn官方文档:

2.containers文档:

①Moudle的作用:

 ②Moudle的示例代码:

③forward函数官方解释:

二、卷积操作:

1.常用的卷积:

2.Conv2d

①使用方法:

②Stride参数理解:

③代码:

④padding参数讲解:


一、神经网络的基本骨架-nn.Moudle的使用

1.torch.nn官方文档:

先学习骨架containers,然后剩下的都是用来填充骨架的

2.containers文档:

①Moudle的作用:

②Moudle的示例代码:

主要有初始化函数和向前函数两个

③forward函数官方解释:

3.代码部分:

①重写两个函数,一种可以手写;

   另一种可以借助pycharm->code->generate->Override Methods重写方法->init函数->完成

②代码示例:

from torch import nn
import torch
#定义模版
class Tudui(nn.Module):
    def __init__(self):
        super().__init__()
    def forward(self,input):
        output=input+1
        return output


#创建神经网络
tudui = Tudui()
x = torch.tensor(1.0)
#传入值
output = tudui(x)
print(output)

 ③debug查看详情:

二、卷积操作:

1.常用的卷积:

2.Conv2d

①使用方法:

torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1) → Tensor

#参数:

  • input – 输入,尺寸要求(minibatch,in_channels,𝑖𝐻,𝑖𝑊)

  • weight – 权重,尺寸要求 (out_channels,in_channels,𝑘𝐻,𝑘𝑊)

  • bias – 偏置

  • stride –卷积核,可以为单个数字or元组(sH,sW)-一个横向路径一个竖向路径

  • padding-决定填充的有多大,可以为单个数字or元组(padH,padW)

  • dilation 

  • groups

②Stride参数理解:

a.有输入图像和卷积核

b.将输入图像的前三行和卷积核匹配:对应位相乘再相加

1x1+4+0+0+1+0+2+2+0=10,输出为10

c.假设Stride=(1,1)时,卷积核下一次走一步

2+0+3+0+2+0+4+1=12,输出为12

d.再右移,0+6+1+0+3+0+2+0+0=12

e.横向走完走纵向:18

f.最后输出:

[10,12,12,

 18,16,16,

 12, 9, 3]

③代码:

import torch
import torch.nn.functional as F
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]])
#1batchsize,1chanel,5x5,要与官方要求输入一致
input = torch.reshape(input,(1,1,5,5))
kernel = torch.reshape(kernel,(1,1,3,3))
#第一步先求尺寸
print(input.shape)
print(kernel.shape)

output = F.conv2d(input,kernel,stride=1)
print(output)

(四维分别是:样本数,矩阵深度,高度,宽度)

④padding参数讲解:

a.padding = 1

b.代码示范:

import torch
import torch.nn.functional as F
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]])
#1batchsize,1chanel,5x5,要与官方要求输入一致
input = torch.reshape(input,(1,1,5,5))
kernel = torch.reshape(kernel,(1,1,3,3))
#第一步先求尺寸
print(input.shape)
print(kernel.shape)

output = F.conv2d(input,kernel,stride=1)
print(output)

output2= F.conv2d(input,kernel,stride=1,padding=1)
print(output2)

c.填充后结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值