pytorch学习笔记(七 )

发布时间:2024年01月12日

池化类似压缩

最大池化-上采样

例如给一个3的话就会生成一个3×3的窗口(生成相同的高和宽),给一个tuple就会给出一个相同的池化核。stride默认值就是核的大小

dilation

在卷积dialation设置之后每一个会和另外的差一个,空洞卷积

ceil floor 模式(天花板、地板)

floor就是向下取整。

按下面的方法走,走的步数默认为核的大小

取9个里面的最大值,走到右一图,这种情况只能覆盖6个,其他没有数字,在这种情况下要不要取6个数的最大值,还是直接放弃这6个数,就看ceil mode模式了!如果是ceil下,就要保留这6个数。

非线性激活

ReLu、sigmoid

以ReLu、sigmoid为例

注意输入输入的batch_size后面不做一个限制

1.数据预处理,定义输入,并变换输入形状。

首先,套路先引入torch,然后定义一个input,如下

input = torch.tensor([[1, -0.5],
[-1, 3]])
#“-1”表示batchsize任意电脑给,1代表一维的,
output = torch.reshape(input, (-1, 1, 2, 2))

input = torch.tensor([[1, -0.5],
                     [-1, 3]])
#“-1”表示batchsize任意电脑给,1代表一维的,
output = torch.reshape(input, (-1, 1, 2, 2))

这边要解释一下reshape之后的目标形状,经过reshape之后,输入的形状会变成(2, 1, 2, 2),这是这是为了适应卷积神经网络的输入格式[batch_size, channels, height, width]

2.搭建神经网络

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui, self).__init__()
        #什么叫inplace
        self.relu1 = ReLU()

这边要先暂停注意一下ReLU的输入中的inplace:替换,在不在原来的地方进行替换

引用传递和值传递的区别

例如当:

对原来的变量直接进行变换,结果的替换

Input = -1
ReLU(input, inplace=True)
Input = 0

?不替换,新的变换值会返回成一个Output,一般情况下采用下面这种方式,防止原始数据的丢失

Input = -1
ReLU(input, inplace=Flase)
Input = -1
Output = 0

?紧接神经网络完整的代码如下:

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui, self).__init__()
        #什么叫inplace
        self.relu1 = ReLU()
  def forward(self,input):
        output = self.relu1(input)
        return output
tudui =  Tudui()
output = tudui(input)
print(output)

紧接着看sigmoid对图像的影响

归一化层,Recurrent层,Transformer 层,线性层

1.normalization是归一化,regularization是正则化

2.线性层

3.dropout层(主要是防止过拟合用的)

按p的概率将一些输入元素随机变成0

4.Embedding层(稀疏层)

重点学习一下线性层

X1到g1会有一个映射管线K1*x1+b(偏置权重)

学习一下VGG16网络

1*1*4090 -1*1*1000

任务

引入展平函数

文章来源:https://blog.csdn.net/weixin_44680341/article/details/135400655
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。