PyTorch深度学习实践——卷积神经网络

卷积神经网络

说明

  1. 卷积神经网络就是特征提取器,前一部分叫Feature Extraction,后一部分叫classification。
  2. 卷积神经网络的过程是:卷积(线性变换,提取出重要的特征)、激活函数(非线性变换)、池化(对提取的特征进行压缩);这个过程经过若干次后,用view打平成一维向量,然后送入全连接层。

在这里插入图片描述

import torch
#输入的通道数为5,输出通道数为10
in_channels,out_channels=5,10
#图片大小为100*100
width,height=100,100
#卷积核的大小为3*3
kernel_size=3
#一批
batch_size=1

#构造输入特征
#构造一个通道数为5,大小为100*100的数据
input=torch.randn(batch_size,
                  in_channels,
                  width,
                  height
)

#构造卷积层
conv_layer=torch.nn.Conv2d(
                           in_channels,
                           out_channels,
                           kernel_size=kernel_size
)
output=conv_layer(input)
#输入特征维度为1*5*100*100
print(input.shape)
#输入特征维度为1*10*98*98
print(output.shape)
#
print(conv_layer.weight.shape)

最大池化

import torch
input=[1,2,3,4,
5,6,7,8,
8,9,7,4,
5,7,3,7]
#输入数据要转化为张量类型且卷积层要求输入输出是四维张量,1批1通道的4*4的数据
input=torch.Tensor(input).view(1,1,4,4)
#最大池化,池化面积为2*2
maxpooling_layer=torch.nn.MaxPool2d(kernel_size=2)
output=maxpooling_layer(input)
print(output)

如下图所示将一个12828维度的图片输入卷积神经网络,经过1055卷积层卷积后,维度变为102424,在经过22池化层的最大池化,维度变成1012*12,再经过一次卷积和池化,最后压缩成一维向量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Net(torch.nn.Model):
      def __init__(self):
          super(Net,self).__init__()
          self.conv1=torch.nn.Conv2d(1,10,kernel_size=5)
          self.conv2=torch.nn.Conv2d(10,20,kernel_size=5)
          self.pooling=torch.nn.MaxPool2d(2)
          self.fc=torch.nn.Linear(320,10)
       def forward(self,x):
       #Flatten data from (n,1,28,28) to (n,784)
           batch_size=x.size(0)
           x=F.relu(self.pooling(self.conv1(x)))
           x=F.relu(self.pooling(self.conv2(x)))
           x=x.view(batch_size,-1)#Flatten
           x=self.fc(x)
           return x
           
   model=Net()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值