卷积神经网络(CNN)与深度卷积神经网络(DCNN)

卷积神经网络(CNN)与深度卷积神经网络(DCNN)作为小白,看到DCNN,一直想知道与CNN的区别,也没找到明确的说法,以下是自己的一点想法,欢迎指正!目录一、CNN与DCNN二、基于pytorch的实现1.LeNet-52.AlexNet一、CNN与DCNN卷积神经网络,如:LeNet深度卷积神经网络,如:AlexNetAlexNet与LeNet结构类似,但使用了更多的卷积层和更大的参数空间来拟合大规模数据集ImageNet。卷积神经网络就是含卷积层的网络。AlexNet是浅层神经网络和深度神经网络的分界..

大家好,又见面了,我是你们的朋友全栈君。

作为小白,看到DCNN,一直想知道与CNN的区别,也没找到明确的说法,以下是自己的一点想法,欢迎指正!

 

目录

一、CNN与DCNN

二、基于pytorch的实现

1.LeNet-5

2.AlexNet


一、CNN与DCNN

卷积神经网络,如:LeNet

深度卷积神经网络,如:AlexNet

AlexNet是第一个现代深度卷积网络模型,首次使用了许多现代深度卷积网络的技术方法,比如,采用ReLu作为非线性激活函数,使用Dropout防止过拟合,是用数据增强提高模型准确率,使用GPU进行并行训练等。

AlexNet与LeNet结构类似,但使用了更多的卷积层和更大的参数空间来拟合大规模数据集ImageNet。

卷积神经网络就是含卷积层的网络。AlexNet是浅层神经网络和深度神经网络的分界线。

(选自书《动手学深度学习》、《神经网络与深度学习》)

二、基于pytorch的实现

参考卷积神经网络之 – Lenet

LeNet、AlexNet模型实现(pytorch)

1.LeNet-5:

卷积神经网络(CNN)与深度卷积神经网络(DCNN)

来自《神经网络与深度学习》

Input -> conv1 (6) -> pool1 -> conv2 (16) -> pool2 -> fc3 (120) -> fc4 (84) -> fc5 (10) -> softmax

代码实现与原文存在一定差异

import torch
import torch.nn as nn
import torch.nn.functional as func

class LeNet5(nn.Module):
    def __init__(self,num_classes, grayscale=False):
        """
              num_classes: 分类的数量
              grayscale:是否为灰度图
              """
        super(LeNet5, self).__init__()

        self.grayscale = grayscale
        self.num_classes = num_classes

        if self.grayscale:  # 可以适用单通道和三通道的图像
            in_channels = 1
        else:
            in_channels = 3

        self.conv1 =self.conv1 = nn.Conv2d(in_channels, 6, kernel_size=5)
        self.conv2 = nn.Conv2d(6, 16, kernel_size=5)
        self.fc1 = nn.Linear(16*5*5, 120)
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, num_classes)

    def forward(self, x):
        x = func.max_pool2d(self.conv1(x), 2)   # 原始的模型使用的是 平均池化
        x = func.max_pool2d(self.conv2(x), 2)
        x = x.view(x.size(0), -1)
        x = self.fc3(self.fc2(self.fc1(x)))
        x = func.softmax(x,dim=1)
        return x

#(最后模拟了一个输入,输出一个分类器运算后 10 个 softmax 概率值)
num_classes = 10  # 分类数目
grayscale = True  # 是否为灰度图
data = torch.rand((1, 1, 32, 32))
print("input data:\n", data, "\n")
model = LeNet5(num_classes, grayscale)
x= model(data)
print(x)

卷积神经网络(CNN)与深度卷积神经网络(DCNN)

2.AlexNet

 

preview

卷积神经网络(CNN)与深度卷积神经网络(DCNN)

来自《神经网络与深度学习》

 

假设输入为32*32大小图像,代码实现与上文所述存在一定差异。

import torch
import torch.nn as nn
class AlexNet(nn.Module):
    def __init__(self,num_classes, grayscale=False):

        super(AlexNet, self).__init__()
        self.grayscale = grayscale
        self.num_classes = num_classes
        if self.grayscale:  # 可以适用单通道和三通道的图像
            in_channels = 1
        else:
            in_channels = 3

        self.features = nn.Sequential(
            nn.Conv2d(in_channels, 96, kernel_size=11,padding=1),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=2),
            nn.Conv2d(96, 256, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=2),
            nn.Conv2d(256, 384, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.Conv2d(384, 384, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.Conv2d(384, 256, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=2),
        )
        self.classifier = nn.Sequential(
            nn.Dropout(),
            nn.Linear(256 * 3 * 3, 4096),
            nn.ReLU(inplace=True),
            nn.Dropout(),
            nn.Linear(4096, 4096),
            nn.ReLU(inplace=True),
            nn.Linear(4096, 10),
        )

    def forward(self, x):
        x = self.features(x)
        x = x.view(x.size(0), 256 * 3 * 3)
        x = self.classifier(x)
        return x

#最后模拟了一个输入,输出一个分类器运算后的值
num_classes = 10  # 分类数目
grayscale = True  # 是否为灰度图
data = torch.rand((1, 1, 32, 32))
print("input data:\n", data, "\n")
model = AlexNet(num_classes,grayscale)
x=model(data)
print(x)

卷积神经网络(CNN)与深度卷积神经网络(DCNN)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135108.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月3日 下午1:00
下一篇 2022年5月3日 下午1:00


相关推荐

  • Matlab 之norm函数

    Matlab 之norm函数Matlab 函数 norm 有两种形式 1 n norm X 2 n norm X p p 范数其中 n norm X 与 n norm X 2 相同 a 1 1 2 23 n1 norm a n2 norm a 2 n1 3 6383 n2 3 6383 p 2 时 2 范数的计算 n sqrt ma

    2026年3月19日
    2
  • 美女图片采集器 (源码+解析)[通俗易懂]

    美女图片采集器 (源码+解析)[通俗易懂]前言:有一段时间没写博客了,”持之以恒”徽章都暗了,实在不该。前一段确实比较忙,…小小地给自己的懒找个借口吧。大二即将结束,学习iOS也有一段时间了。今天抽点时间,开源一个前几天刚上传的App里面的一个功能,RT,美女图片采集器。 美女..相信没有人不喜欢吧,基于此,这个小Demo应运而生。注: 本文正在参加博

    2025年11月14日
    5
  • 光纤交换机常用命令

    光纤交换机常用命令使用电脑连接管理网口,默认IP地址为:192.168.0.1,掩码:255.255.255.0默认用户名:admin,默认密码password1.switchStatusShow查看交换机的总体健康状态switch:admin>switchstatusshowSwitchHealthReportSwitchName:SWF…

    2022年5月11日
    97
  • charles打断点有什么用_charles打断点后 如何执行

    charles打断点有什么用_charles打断点后 如何执行前言Charles是收费软件,可以免费试用30天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过30分钟,并且启动时将会有10秒种的延时。此时,我们只需网上找一个注册码即可解

    2022年7月30日
    7
  • .deb版本cuda安装。

    .deb版本cuda安装。1.先记录下驱动问题:1).run形式安装cuda。清理原有显卡驱动后,先安装自己显卡对应的驱动,在步骤中出现”Wouldyouliketorunthenvidia-xconfigutilitytoautomaticallyupdateyourXconfigurationfile…”时,选择No。(这里是cuda自带的旧版本的驱动)。我安装cuda8.0时,是…

    2022年6月1日
    63
  • 在线商城和商城后台管理系统

    在线商城和商城后台管理系统在线商城和商城后台管理系统 1 商城使用了 vue2 elementUI 实现了登录注册 浏览商品 购买商品 收藏商品 商品搜索 加入购物车 查看订单 添加收货地址 在线客服 分类查看商品的等功能 2 商城后台管理系统使用了 react antd 实现了注册登录 商城整体数据的查看 用户管理 商品管理 订单管理 财务管理 客服服务的功能 其下还分各种小功能对用户商品订单等详细功能进行增删改查的操作 2 商城的后端使用了 express mongoDB 使用了 node js 的 express 和 mongoDB 数据库

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号