卷积神经网络:自定义CNN模型

自定义的卷积神经网络模型CNN,对图片进行分类并使用图片进行测试模型-适合入门,从模型到训练再到测试,开源项目 阅读详情

一、自定义一个简单的CNN模型

方法1

# 使用pytorch自定义一个简单的CNN模型
import torch
import torch.nn as nn

class SimpleCNN(nn.Module):
    def __init__(self):
        super(SimpleCNN, self).__init__()

        self.conv1 = nn.Conv2d(3, 16, kernel_size=3, padding=1) #卷积
        self.relu1 = nn.ReLU() #激活函数
        self.pool1 = nn.MaxPool2d(2, 2) #池化

        self.conv2 = nn.Conv2d(16, 32, kernel_size=3, padding=1) #卷积
        self.relu2 = nn.ReLU() #激活函数
        self.pool2 = nn.MaxPool2d(2, 2) #池化

    #前向传播过程
    def forward(self, x):
        x = self.pool1(self.relu1(self.conv1(x)))
        x = self.pool2(self.relu2(self.conv2(x)))
        return x


if __name__ == '__main__':
    model = SimpleCNN()
    print("模型结构:\n", model)

上面代码虽然没有多大问题,但是看起来还是有点过于繁琐,推荐使用nn.Sequential 进行改进。nn.Sequential 是 PyTorch 中的一个容器类模块,用于按顺序组织多个神经网络层(nn.Module 的子类),它会按照你添加的顺序依次执行这些层。

方法2

使用 nn.Sequential 的好处

  1. 代码简洁:不用手动写 forward 函数,每一层自动按顺序执行。

  2. 结构清晰:适合构建线性堆叠结构的网络(如 CNN 的卷积层、全连接层等)。

  3. 易于调试:可以像列表一样访问各个层,例如 model[0] 表示第一个层。

注意事项:

  • 除了按顺序执行,nn.Sequential 不提供其他功能。

  • 如果你的网络结构有分支、跳跃连接(如 ResNet 中的 shortcut)、多个输入输出等复杂结构,就不适合用 nn.Sequential,而应该自定义 forward 方法。

nn.Sequential 是一个按顺序执行的神经网络模块容器,适合构建线性堆叠结构的模型,可以简化代码并使结构更清晰。

import torch
import torch.nn as nn

class SimpleCNN(nn.Module):
    def __init__(self):
        super(SimpleCNN, self).__init__()

        self.features = nn.Sequential(
            nn.Conv2d(3, 16, kernel_size=3, padding=1),  # 输入3通道,输出16通道
            nn.ReLU(),
            nn.MaxPool2d(2, 2),
            nn.Conv2d(16, 32, kernel_size=3, padding=1),  # 输入16通道,输出32通道
            nn.ReLU(),
        )

if __name__ == '__main__':
    model = SimpleCNN()
    print("模型结构:\n", model)

二、自定义CNN模型实现图片边缘检测案例

代码

import torch
import torch.nn as nn
import torch.nn.functional as F
import torchvision.transforms as transforms
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np


# 定义简单的CNN模型
class EdgeDetectionCNN(nn.Module):
    def __init__(self):
        super(EdgeDetectionCNN, self).__init__()
        # 使用固定的边缘检测卷积核
        self.conv1 = nn.Conv2d(1, 2, kernel_size=3, padding=1, bias=False)

        # 手动设置卷积核权重(水平和垂直边缘检测)
        sobel_x = torch.tensor([[[[-1, 0, 1],
                                  [-2, 0, 2],
                                  [-1, 0, 1]]]], dtype=torch.float32)

        sobel_y = torch.tensor([[[[-1, -2, -1],
                                  [0, 0, 0],
                                  [1, 2, 1]]]], dtype=torch.float32)

        # 组合两个卷积核
        edge_kernels = torch.cat([sobel_x, sobel_y], dim=0)
        self.conv1.weight = nn.Parameter(edge_kernels, requires_grad=False)

    def forward(self, x):
        # 应用边缘检测卷积
        edge_features = self.conv1(x)
        # 分离水平和垂直特征
        horizontal = edge_features[:, 0:1, :, :]
        vertical = edge_features[:, 1:2, :, :]
        # 计算边缘强度
        edge_magnitude = torch.sqrt(horizontal ** 2 + vertical ** 2)
        return edge_magnitude, horizontal, vertical


# 图像预处理
def preprocess_image(image_path):
    # 打开图像并转换为灰度
    image = Image.open(image_path).convert('L')
    transform = transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.5], std=[0.5])
    ])
    # 添加batch维度 [1, 1, H, W]
    image_tensor = transform(image).unsqueeze(0)
    return image_tensor, image


# 可视化结果
def visualize_results(original, horizontal, vertical, magnitude):
    plt.figure(figsize=(12, 10))

    # 原始图像
    plt.subplot(2, 2, 1)
    plt.imshow(original, cmap='gray')
    plt.title('Original Image')
    plt.axis('off')

    # 水平边缘
    plt.subplot(2, 2, 2)
    plt.imshow(horizontal, cmap='gray')
    plt.title('Horizontal Edges')
    plt.axis('off')

    # 垂直边缘
    plt.subplot(2, 2, 3)
    plt.imshow(vertical, cmap='gray')
    plt.title('Vertical Edges')
    plt.axis('off')

    # 边缘强度
    plt.subplot(2, 2, 4)
    plt.imshow(magnitude, cmap='gray')
    plt.title('Edge Magnitude')
    plt.axis('off')

    plt.tight_layout()
    plt.savefig('edge_detection_result.png')
    plt.show()


# 主流程
if __name__ == "__main__":
    # 1. 初始化模型
    model = EdgeDetectionCNN()

    # 2. 加载和预处理图像
    image_tensor, original_image = preprocess_image('./images/bird01.jpg')  # 替换为你的图片路径

    # 3. 提取边缘特征
    with torch.no_grad():
        edge_magnitude, horizontal, vertical = model(image_tensor)

    # 4. 转换为numpy并后处理
    horizontal_np = horizontal.squeeze().numpy()
    vertical_np = vertical.squeeze().numpy()
    magnitude_np = edge_magnitude.squeeze().numpy()

    # 5. 可视化结果
    visualize_results(original_image,
                      horizontal_np,
                      vertical_np,
                      magnitude_np)

代码说明:

  1. 模型架构:

    • 自定义CNN包含单个卷积层

    • 使用两个固定的3x3卷积核(Sobel算子的水平和垂直方向)

    • 卷积层权重被冻结(不参与训练)

  2. 边缘检测原理:

    • 水平卷积核检测垂直边缘

    • 垂直卷积核检测水平边缘

    • 边缘强度 = √(水平分量² + 垂直分量²)

  3. 处理流程:

    • 输入图像转换为灰度图

    • 归一化到[-1, 1]范围

    • 通过卷积层提取特征

    • 分离水平和垂直边缘分量

    • 计算边缘强度图

  4. 输出可视化:

    • 原始图像

    • 水平边缘特征图

    • 垂直边缘特征图

    • 边缘强度合成图

技术要点:

  • 使用Sobel算子作为固定卷积核,是传统图像处理中经典的边缘检测方法

  • 通过torch.no_grad() 禁用梯度计算,提高推理效率

  • 特征图后处理包含绝对值和强度计算,增强边缘可视化效果

  • 输出特征图与输入图像同分辨率(通过padding=1保持尺寸)

三、自定义CNN模型检测图片特征案例

代码

import torch
import torch.nn as nn
import torchvision.transforms as transforms
from PIL import Image
import matplotlib.pyplot as plt


# 定义简单的CNN模型
class SimpleCNN(nn.Module):
    def __init__(self):
        super(SimpleCNN, self).__init__()
        # 特征提取层
        self.features = nn.Sequential(
            nn.Conv2d(3, 16, kernel_size=3, padding=1),  # 输入3通道,输出16通道
            nn.ReLU(),
            nn.MaxPool2d(2, 2),  # 尺寸减半

            nn.Conv2d(16, 32, kernel_size=3, padding=1),
            nn.ReLU(),
            nn.MaxPool2d(2, 2),

            nn.Conv2d(32, 64, kernel_size=3, padding=1),
            nn.ReLU(),
            nn.MaxPool2d(2, 2)
        )

    def forward(self, x):
        return self.features(x)


# 图像预处理
def preprocess_image(image_path):
    transform = transforms.Compose([
        transforms.Resize((224, 224)),  # 调整图像尺寸
        transforms.ToTensor(),  # 转为Tensor
        transforms.Normalize(  # 标准化
            mean=[0.485, 0.456, 0.406],
            std=[0.229, 0.224, 0.225]
        )
    ])
    image = Image.open(image_path).convert('RGB')
    return transform(image).unsqueeze(0)  # 增加batch维度


# 可视化特征图
def visualize_feature_maps(feature_maps, layer_name):
    # 将特征图从GPU转到CPU并转为numpy
    features = feature_maps.squeeze(0).detach().cpu().numpy()

    # 创建子图
    fig, axes = plt.subplots(8, 8, figsize=(12, 12))
    fig.suptitle(f'Feature Maps: {layer_name}', fontsize=16)

    # 绘制前64个特征图
    for i, ax in enumerate(axes.flat):
        if i < features.shape[0]:
            ax.imshow(features[i], cmap='viridis')
            ax.set_title(f'Ch {i + 1}')
            ax.axis('off')
    plt.tight_layout()
    plt.show()


# 主程序
if __name__ == "__main__":
    # 1. 创建模型
    model = SimpleCNN()
    print("模型结构:\n", model)

    # 2. 加载并预处理图像
    image_tensor = preprocess_image('./images/cat.jpg')  # 替换为你的图片路径
    print("输入图像尺寸:", image_tensor.shape)

    # 3. 前向传播提取特征
    with torch.no_grad():
        feature_maps = model(image_tensor)

    # 4. 输出特征图信息
    print("\n提取的特征图尺寸:", feature_maps.shape)  # [batch, channels, height, width]
    print("特征图数量:", feature_maps.size(1))

    # 5. 可视化特征图
    visualize_feature_maps(feature_maps, "Final Conv Layer")

这里重点解释一下transforms.Compose模块。

transforms.Compose 是 PyTorch 中 torchvision.transforms 模块提供的一个非常有用的类,它允许你将多个图像变换组合成一个单一的变换。这对于在数据预处理阶段需要应用一系列转换操作(如调整大小、裁剪、翻转、归一化等)特别方便。当你使用 Compose 来创建一个转换列表时,输入的图像会按照列表中转换的顺序依次经过每个转换。

  • transforms.Resize((224, 224)): 这个转换操作会将输入图像的尺寸调整到指定的大小,这里是 224×224 像素。调整大小是很多深度学习模型的一个常见预处理步骤,因为大多数模型都需要固定的输入尺寸。

  • transforms.ToTensor(): 此操作将PIL Image或NumPy ndarray转换为FloatTensor,并且调整图像像素值的范围从[0, 255]到[0.0, 1.0]。这样做是为了使输入适合于许多深度学习框架中的计算要求。

  • transforms.Normalize(mean, std): 归一化操作。此步骤非常重要,因为它帮助模型更快地收敛。这里的参数mean和std分别表示用于每个通道的均值和标准差。对于RGB三通道图像,您提供了三个均值和三个标准差,对应于R、G、B三个通道。这个特定的均值和标准差集是基于ImageNet数据集计算得出的,常用于预训练模型的输入预处理。

这样,图像就会按顺序经过Resize、ToTensor和Normalize这三个转换步骤,最后得到一个可以输入到神经网络中的张量。

四、永远不要直接调用forward()

思考一个问题

这里让我思考另外一个问题,feature_maps = model(image_tensor) 这行代码为什么会自动调用forward方法呢?

背后的机制
  1. nn.Module基类的魔法方法:

    • 当你调用model(input_tensor)时,实际上是在调用模型的__call__方法

    • PyTorch的nn.Module类重写了__call__方法

    • __call__方法内部会调用forward方法,并添加额外的处理(如钩子函数)

  2. 代码等价关系:

     # 这两种写法是等价的
     output = model(image_tensor)      # 推荐写法
     output = model.forward(image_tensor)  # 等效写法(但不推荐)
  3. 为什么设计成这样:

    • 语法更简洁自然(像函数调用一样使用模型)

    • 允许PyTorch在执行forward前后添加额外逻辑

    • 支持模型钩子(hooks)等高级功能

    • 保持API的一致性(所有模型都可以这样调用)

为什么这样设计比直接调用forward更好
方式优点缺点
model(input)自动处理hooks、梯度等-
model.forward(input)更"直接"可能绕过重要逻辑

在PyTorch中,永远不要直接调用forward(),因为:

  1. 会跳过nn.Module的前置/后置处理

  2. 可能导致hooks不执行

  3. 梯度计算可能不正常

总结:为什么永远不要直接调用 forward()
问题类型直接调用 forward() 的后果正确调用 model(input) 的优势
前置/后置处理跳过训练/评估模式切换,子模块初始化等自动处理所有模块状态管理
Hooks所有注册的钩子都不会执行保证所有钩子正确触发
梯度计算破坏计算图,导致梯度为零或错误保持完整的计算图,正确计算梯度
嵌套模块子模块的前向传播也可能被破坏递归正确处理所有子模块
框架兼容性可能导致与其他PyTorch功能不兼容保证与所有PyTorch特性兼容

在实际开发中,唯一应该直接使用 forward() 的情况是当你在重写 nn.Module 的 forward 方法时,需要调用父类或其他模块的 forward 方法。即便如此,也应该使用 super().forward(x) 或 self.child_module(x) 的形式,而不是直接调用 child_module.forward(x)。

Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN 1. 概述         回想一下BP神经网络。BP网络每一层节点是一个线性的一维排列状态,层与层的网络节点之间是全连接的。这样设想一下,如果BP网络中层与层之间的节点连接不再是全连接,而是局部连接的。这样,就是一种最简单的一维卷积网络。如果我们把上述这个思路扩展到二维,这就是我们在大多数参考资料上看到的卷积神经网络。具体参看下图: 阅读详情

相关推荐

【Pytorch教程】:卷积神经网络 CNN

Pytorch教程目录 Torch and Numpy 变量 (Variable) 激励函数 关系拟合(回归) 区分类型 (分类) 快速搭建法 批训练 加速神经网络训练 Optimizer优化器 卷积神经网络 CNN 目录Pytorch教程目录什么是卷积神经网络 CNN卷积 和 神经网络池化(pooling)流行的 CNN 结构CNN 卷积神经网络MNIST手写数据CNN模型训练可视化训练全部代码 什么是卷积神经网络 CNN 卷积 和 神经网络 卷积神经网络是如何运作的呢, 举一个识别图片的例子, 我们知

nanke_4869的博客 8089

【深度学习实验】卷积神经网络(六):自定义卷积神经网络模型(VGG)实现图片多分类任务

本实验实现了自定义的卷积神经网络模型(VGG),并实现图片多分类任务(CIFAR-10数据集,包含10个种类)

天地玄黄 魑魅魍魉 风花雪月 商角徵羽 3686

基于Pytorch的卷积神经网络CNN实例应用及详解

基于Pytorch的卷积神经网络CNN实例应用及详解 一、卷积神经网络CNN定义 卷积神经网络(CNN,有时被称为 ConvNet)是很吸引人的。在短时间内,它们变成了一种颠覆性的技术,打破了从文本、视频到语音等多个领域所有最先进的算法,远远超出了其最初在图像处理的应用范围。CNN 由许多神经网络层组成。卷积和池化这两种不同类型的层通常是交替的。网络中每个滤波器的深度从左到右增加。最后通常由一个或多个全连接的层组成。 二、卷积神经网络的原理 ...

rothschild666的博客 5522

【自定义一个简单的CNN模型】——深度学习.卷积神经网络

使用pytorch自定义一个简单的CNN模型return xprint("模型结构:\n", model)模型结构:SimpleCNN(上面代码虽然没有多大问题,但是看起来还是有点过于繁琐,推荐使用nn.Sequential 进行改进。是 PyTorch 中的一个容器类模块,用于按顺序组织多个神经网络层(nn.Module的子类),它会按照你添加的顺序依次执行这些层。是一个按顺序执行的神经网络模块容器,适合构建线性堆叠结构的模型,可以简化代码并使结构更清晰。# 定义简单的CNN模型。

weixin_70972767的博客 1694

CNN卷积神经网络详解

卷积神经网络(CNN)是一种深度学习模型,广泛应用于图像处理、语音识别、自然语言处理等领域。图像分类和识别:CNN在图像分类和识别方面的应用是最为广泛的。通过训练,CNN能够学习到从图像中提取特征的能力,从而实现对图像的分类和识别。例如,在人脸识别、物体检测、车牌识别等领域,CNN都取得了显著的效果。语音识别:CNN也可以应用于语音识别领域,通过对语音信号的卷积和池化处理,提取出语音的特征表示,从而实现对语音的分类和识别。

qq_44815135的博客 3377

CNN卷积神经网络

CNN卷积神经网络 一、CNN卷积神经网络概念 卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。 二、CNN卷积神经网络原理 简要介绍下。神经网络的每个单元如下: 其对应的公式如下: 其中,该单元也可以被称作是Logistic回归模型。当将多个单元组合起来并具有分层结构时,就形成了神经网络模型。下图展示了一个具有一个隐含层的神经网络。其对应的公式如下: 比较类似的,可以拓展到有

qq_54615837的博客 6134

pytorch学习笔记:模型创建及权重初始化

1、模型创建 1.1、构建网络层(子模块) 1.2、拼接网络层(子模块) 1.3、nn.Module 首先进行了8个有序字典的初始化,用来管理各个参数及网络设置 一个module可以包含多个子module 一个module相当于一个运算,必须实现forward()函数 每个module都有8个字典管理它的数学 1.4模型容器 1.4.1、nn.Seque...

weixin_44285710的博客 3324

AI Agent Harness Engineering 监控与日志系统搭建

在生成式AI(Generative AI)与大语言模型(LLM)普及的今天,AI Agent(自主智能代理)已经成为了继「LLM API调用」「单轮/多轮对话」之后的第三代AI应用范式——Agent能够自主感知环境、制定多步决策、调用外部工具(Web搜索、数据库、RAG检索、企业系统API等)、执行复杂任务并优化自身策略。然而,随着Agent应用从Demo原型快速落地到企业生产环境,一系列与工程化落地强绑定的可观测性(Observability)问题正在成为Agent项目成功上线、稳定运行的最大瓶颈。

AI开发架构师 184

自定义卷积神经网络

卷积神经网络与fpga

weixin_43828944的博客 2176

汽车底盘技术解析:从悬架调校到智能化,如何评价国产车底盘实力

汽车底盘作为决定车辆驾驶质感、安全性和耐久性的核心系统,其技术内涵远不止于悬架结构。从行驶系、转向系到制动系的协同工作,底盘调校是一门融合机械原理与工程实践的艺术。在电动化与智能化浪潮下,底盘技术正经历从被动适应到主动响应的变革,CDC可变阻尼减震器和空气悬架等技术的应用,让底盘具备了通过OTA升级实现性能优化的可能。国产汽车品牌如奇瑞、吉利等,通过平台化架构研发与调校经验积累,正推动底盘技术从“能用”向“好用”乃至“塑造独特驾驶风格”迈进。理解底盘技术,需超越简单的结构对比,关注其在实际路况中的滤震性、支

weixin_34413103的博客 387

Git系列(一)、Git基础教程【建议收藏】

Git一、Git简介1.1、什么是Git? 一、Git简介 1.1、什么是Git? Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。 Git与常用的版本控制工具CVS、Subversion等不同,它采用了分布式版本库的方式,不用服务器端软件支持。 .........

一宿君 4万+

Python:实现 PyTorch 中训练自定义卷积神经网络模型(CNN)并导出模型为 ONNX 格式,同时使用 ONNX Runtime 进行推理

数据标准化sample = sample.view(1, 28, 28) # 转换为28x28图像格式在类中,__init__方法加载 CSV 文件并进行数据标准化;方法将每个样本转换为一个28x28的图像格式。我们使用两个卷积层和两个全连接层来构建一个简单的 CNN。x = x.view(-1, 64 * 7 * 7) # 展平本文介绍了如何在 PyTorch 中训练一个 CNN 模型,并将其导出为 ONNX 格式。

m0_71043875的博客 1429

弹簧管压力表设计报告

精密机械课程设计 弹簧管压力表设计报告 2020年5月1日 目 录 第一章 设计任务概述... 3 1.1 课程设计目的... 3 1.2 设计任务... 3 1.3 技术指标... 3 第二章 压力表概述... 4 2.1 机械式压力表的组成部分... 4 2.2 工作原理... 4 第三章 压力表设计... 5 3.1 弹簧管参数设计... 5 3.2 曲柄滑块机构设计... ...

weixin_42163746的博客 6452

自定义的卷积神经网络模型CNN,对图片进行分类并使用图片进行测试模型-适合入门,从模型到训练再到测试

自定义的卷积神经网络模型CNN,对图片进行分类并使用图片进行测试模型

jjh135445的博客 1012

图解电动汽车:电动汽车电控系统

电动汽车的电控系统通常包含三个子控制系统 —— 整车控制器、电池管理系统、驱动电机控制器。 整车控制器 VCU 整车控制器 VCU(Vehicle Control Unit)作为电动汽车的中央控制单元,是整个控制系统的核心,也是各个子系统的调控中心。VCU 的主要功能就是协调管理整车的运行状态,包括采集电机及电池状态,采集加速踏板信号、制动踏板信号、执行器及传感器信号,根据驾驶员的意图综合分析做出相应判定后,监控下层的各部件控制器的动作,它负责汽车的正常行驶、制动能量回馈、整车发动机及动力电池的能量管理、.

程序员「阿基米东」的编程之旅 1万+

Cadence画PCB的傻瓜式教程

1.原理图1)建立元件库2)建立原理图3)在原理图中画好电路图4)利用MENTOR-GRAPHICS-IPC-7351-LP-VIEWER查看元件的封装信息,用pad designer画焊盘,用pcb editor画元件的封装(对照LP_VIEWER),(也可以使用package wizard)5)在原理图中为元件添加封装信息(键入)6)Drc检查7)生成网表2.Pcb1)设置...

tianpu2320959696的博客 1万+

CNN卷积神经网络(图解CNN)

超详细的CNN卷积网络讲解,及经典网络LeNet复现

WGS. 7万+

第五章 TTM 后备管理:5.11 迁移的执行

本文讨论 TTM 框架中缓冲区对象(BO)数据搬运的完整流程,涵盖搬运入口 ttm_bo_handle_move_mem() 的执行步骤、驱动 move 回调的约定、同步辅助函数的使用、多跳迁移机制及异步流水化搬运的处理。重点说明了中转位置的引入原因与执行逻辑,以及通过 ghost 对象和 fence 机制解决异步搬运中的资源释放与访问一致性问题,确保数据安全迁移的同时支持 GPU 异步操作。

图形/计算GPU的驱动与虚拟化技术分享园地 1715

卷积神经网络(CNN)

卷积神经网络是多层感知机(MLP)的变种,由生物学家休博尔和维瑟尔在早期关于猫视觉皮层的研究发展而来,视觉皮层的细胞存在一个复杂的构造,这些细胞对视觉输入空间的子区域非常敏感,称之为感受野。CNN由纽约大学的Yann Lecun于1998年提出(LeNet-5),其本质是一个多层感知机,成功的原因在于其所采用的局部连接和权值共享的方式:一方面减少了权值的数量使得网络易于优化;另一方面降低了模型的复杂度、减小了过拟合的风险。当网络的输入为图像时,这些优点将表现地更加明显。

顺其自然~专栏 5万+

opencv案例实战——银行卡模式匹配识别

在之前的几篇文章中我们已经介绍了opencv的一些基础知识,本篇文章我们将结合一个案例运用之前的知识并且学习opencv中模式匹配的应用,用到的知识点如果有不清楚的可以查看上面列出来的系列文章。具体代码会放在最后。

艾醒的博客 1339

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Python CNN卷积神经网络实例讲解,CNN实战,CNN代码实例,超实用

Python CNN卷积神经网络实例讲解,CNN实战,CNN代码实例,套用简单

L_goodboy的博客 5万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

CNN卷积神经网络(超详解析)

1、神经网络 首先了解神经网络,大家移步这俩篇博客,一篇为纯理论,一篇为实战加理论。 机器学习之神经网络学习及其模型 入门讲解:使用numpy实现简单的神经网络(BP算法) 2、卷积神经网络之层级结构 cs231n课程里给出了卷积神经网络各个层级结构,如下图 上图中CNN要做的事情是:给定一张图片,是车还是马未知,是什么车也未知,现在需要模型判断这张图片里具体是一个什么东西,总之输出一个结果:...

weixin_44023658的博客 2万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

4. 卷积神经网络CNN

4. 卷积神经网络CNN 文章链接 https://gitee.com/fakerlove/deep-learning 以算法区分深度学习应用,算法类别可分成三大类: 常用于影像数据进行分析处理的卷积神经网络(简称CNN) 文本分析或自然语言处理的递归神经网络(简称RNN) 常用于数据生成或非监督式学习应用的生成对抗网络(简称GAN) 资料参考 https://www.zybuluo.com/hanbingtao/note/485480 参考资料2 https://www.cnblogs.com/w

wujing1_1的博客 6994

CNN(卷积神经网络)详解

CNN卷积神经网络详解Why CNN局部感受野(local receptive fields)权值共享(Shared weights and biases)池化(Pooling)总的来看 原文链接:https://blog.youkuaiyun.com/m0_37490039/article/details/79378143 Why CNN 首先回答这样一个问题,为什么我们要学CNN,或者说CNN为什么在很多...

DDB 3万+

大话卷积神经网络(CNN)

这几年深度学习快速发展,在图像识别、语音识别、物体识别等各种场景上取得了巨大的成功,例如AlphaGo击败世界围棋冠军,iPhone X内置了人脸识别解锁功能等等,很多AI产品在世界上引起了很大的轰动。在这场深度学习革命中,卷积神经网络(Convolutional Neural Networks,简称CNN)是推动这一切爆发的主力,在目前人工智能的发展中有着非常重要的地位。 【问...

雪饼的博客 1万+
上一篇: 卷积神经网络:CNN
下一篇: 卷积神经网络:LeNet模型
M-YM
博客等级 码龄4年 173粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值