PyTorch搭建LeNet神经网络

函数的参数

1、PyTorch Tensor的通道排序

[batch, channel, height, width]

        batch: 要处理的一批图像的个数

        channel: 通道数(一般是R G B 三个通道)

        height: 图像的高度

        width: 图像的宽度

2.Conv 2d 卷积层的参数 

[in_channels, out_channels, kernel_size, stride = 1,padding = 0]

        in_channels: 输入特征矩阵的深度 (一般为RGB深度为3)

        out_channels:使用卷积核的个数(使用n个卷积核,那么就会生成一个深度为n维的特征矩阵)

        kernel_size:卷积和的大小

        stride = 1: 默认步长为1

        padding = 0: 默认填充为0

卷积层输出尺寸计算公式看深度学习-图像处理-卷积神经网络_cnn卷积神经网络 像素处理-CSDN博客

3.MaxPool2d 池化层的参数 

[kernel_size, stride = None, padding = 0]

        kernel_size:池化核大小,手动设定

        stride = None:步长不设置默认值,但如果没有指定步长,将会与池化核大小相同

        padding = 0:默认填充为0

池化层不改变深度,只改变图像的高度宽度

4.全连接层

全连接层需要输入一维向量,所有我们需要把前面得到的向量展平,通过使用view函数把向量数据展成一维向量。

通过设置节点个数来缩小数据,第一层设置为120,第二层设置为84,第三次最后的设置大小根据数据自身的情况类别来设置。

代码实现

import torch.nn as nn   # 导入包
import torch.nn.functional as Fclass LeNet(nn.Module):def __init__(self):  # 初始化函数super(LeNet, self).__init__()self.conv1 = nn.Conv2d(3, 16, 5)  # 卷积层self.pool1 = nn.MaxPool2d(2, 2)  # 下采样层self.conv2 = nn.Conv2d(16, 32, 5)self.pool2 = nn.MaxPool2d(2, 2)self.fc1 = nn.Linear(32*5*5, 120)  # 全链接层self.fc2 = nn.Linear(120, 84)self.fc3 = nn.Linear(84, 10)def forward(self, x):  # 正向传播函数x = F.relu(self.conv1(x))  # 采用relu激活函数x = self.pool1(x)x = F.relu(self.conv2(x))x = self.pool2(x)x = x.view(-1, 32*5*5)  # view函数实现数据展成一维向量x = F.relu(self.fc1(x))x = F.relu(self.fc2(x))x = self.fc3(x)return x# 测试实例
import torch
input1 = torch.rand([32, 3, 32, 32])  # 输入tensor的通道参数
mode1 = LeNet()
print(mode1)
output = mode1(input1)

 运行结果

 学习碎碎念

深度学习是真难啊,我反复观看视频然后还记了笔记,最后总结成了这一篇(虽然不是很多,但是对我来说都是精华知识了)搭建这个网络主要是为了实现pytorch官网上的一个demo案例,明天我会继续学习的!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang 开发实战day01 - Variable String Numeric

Golang 教程01 - Variable String Numeric 1. Go语言的重要性 Go语言,又称Golang,是一种由Google开发的静态编译型编程语言。它于2009年首次发布,并在短短几年内迅速流行起来。Go语言具有以下特点: 语法简单易学:Go…

第一节 JDBC是什么?

JDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API,换句话说:JDBC是用于在Java语言编程中与数据库连接的API。 JDBC库包括通常与数据库使用相关,如下面提到的…

链表哨兵例子

哨兵链表例子_根据值删除链表 package linklist;public class leetcode203 {public static void main(String[] args) {ListNode listNode new ListNode(1,new ListNode(2,new ListNode(3)));ListNode listNode1 removeElements(listNode,2);System.out.println(listNode1);…

LeetCode.232. 用栈实现队列

题目 232. 用栈实现队列 分析 先了解一下栈和队列的特点: 栈:先进后出队列:先进先出 想用栈实现队列的特点,就需要使用两个栈。因为两个栈就可以将列表倒序。 假设第一个栈 s1 [1,2,3],第二个栈 s2 [] 。若循环…

STM32FreeRTOS消息队列(STM32Cube高效开发)

文章目录 一、队列(一)简介(二)FreeRTOS队列特点1、入队阻塞:队列满了,此时无法继续写入数据2、出队阻塞:队列为空,此时无法读出数据3、入队阻塞解除,有多个任务等待时&a…

【李沐论文精读】GAN精读

论文:Generative adversarial nets 参考:GAN论文逐段精读、生成对抗网络、李沐视频精读系列 一、介绍 什么是GAN? GAN(Generative adversarial network,生成对抗网络),它由生成器G(Generator Neural Netwo…

如何把已安装的nodejs高版本降级为低版本

第一步.先清空本地安装的node.js版本 按健winR弹出窗口,键盘输入cmd,然后敲回车(或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出,输入cmd再点击回车键) 然后进入命令控制行窗口,并输入where node查看之前本地安装…

android开发游戏加速器,Android架构组件Room功能详解

Java基础 Java Object类方法HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理HashMap 和 HashTable 区别HashCode 作用,如何重载hashCode方法ArrayList与LinkList区别与联系GC机制Java反射机制,Java代理模式Jav…

dolphinescheduler调用API

(作者:陈玓玏) 1. 打开api文档 api文档地址:http://{api server ip}:12345/dolphinscheduler/swagger-ui/index.html?languagezh_CN&langcn,我是用k8s部署的,所以ip和端口是由service决定的&#xf…

Spring MVC 面试题及答案整理,最新面试题

Spring MVC中的DispatcherServlet是什么,它如何工作? DispatcherServlet是Spring MVC中的核心组件,负责协调不同的请求处理器。它的工作流程包括: 1、请求接收: 接收HTTP请求,并将其转发到相应的处理器。…

鱼哥赠书活动第⑩期:一本书讲透ChatGPT,实现从理论到实践的跨越!大模型技术工程师必读

鱼哥赠书活动第⑩期: 内容简介:作者简介:读者对象:直播预告:购书链接:赠书抽奖规则:往期赠书福利: OpenAI 在 2022 年 11 月推出了人工智能聊天应用—ChatGPT。它具有广泛的应用场景&#xff0c…

【Python 识别某滑块的距离】今天来换思维搞滑块,不用识别库,几行代码就能搞定,仅供学习

写作日期:2024.03.05 使用工具:Python 温馨提示:此方法仅对有完整图和缺口图的滑块有效,可精准识别出缺口要滑动的距离 文章全程已做去敏处理!!! 【需要做的可联系我】 AES处理(直接…

SpringCloud之OpenFeign入门与实战系列

目录 一、什么是 OpenFeign? 1.1 OpenFeign 功能升级 二、OpenFeign超时重试机制 2.1 超时重试机制 2.2 自定义超时重试机制 2.2.2 自定义超时重试类 2.3 OpenFeign 超时重试的底层原理 一、什么是 OpenFeign? OpenFeign 的全称为 Spring Cloud OpenFeign(下文简称 Op…

《剑指offer》14--剪绳子(整数拆分)[C++]

目录 题目描述 贪心算法 输出结果 题目描述 把一根绳子剪成多段,并且使得每段的长度乘积最大。 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释:…

Android开发技术总结,附项目源码

今天本文主要讲解: APK文件反编译 什么是反编译如何防止反编译APK文件的基本构造 APK加固的方案原理 APK加固总体架构APK打包基本流程Dex文件的意义 AES加密项目实战 APK加固项目实战APK脱壳技术实战 一.APK文件反编译 1.什么是反编译 定义: 利用…

Java后端核心——Servlet

目录 一.概述 二.基础实现 1.导入坐标 2.定义实现类 3.注解 4.访问Servlet 三.执行流程 四.生命周期 1.加载和实例化 2.初始化 3.请求处理 4.服务终止 五.方法 1.init 2.service 3.destroy 4.getServletInfo 5.getServletConfig 六.体系结构 七.urlPatter…

前端小案例——登录界面(正则验证, 附源码)

一、前言 实现功能: 提供用户名和密码输入框。当用户提交表单时,阻止默认提交行为。使用正则表达式验证用户输入的内容,判断输入的是有效的邮箱地址还是身份证号码。根据验证结果,在输入框下方显示相应的提示信息。 实现逻辑&a…

ZYNQ--PS_PL交互(AXI_HP)

AXI_HP接口 通过AXI_HP接口,可直接通过AXI_FULL协议向DDR中通过DMA传输数据。 BD设计 AXI_HP接口设置 AXI_Master代码 module axi_full_master #(parameter C_M_TARGET_SLAVE_BASE_ADDR = 32h40000000,parameter integer C_M_AXI_BURST_LEN = 16,parameter integer …

DiskMirror-spring-boot-starter 技术|

DiskMirror-spring-boot-starter 技术 diskMirror 实现了 SpringBoot 的 starter 能够集成到 SpringBoot 中。 DiskMirror 的 starter,通过引入此类,可以直接实现 diskMirror 在 SpringBoot 中的自动配置,接下来我们将使用案例逐步的演示 d…

[202403]xavier nx環境配置流程記錄

xavier nx環境配置流程記錄 引言1.板子環境2.設置默認python和pip2.安裝torch和torchvision2.1 下載正確的whl安裝文件2.2 開始安裝2.3 查看torch安裝情況 3.問題記錄3.1 問題1:Running pip as the root user can result in broken permissions3.2 問題2&#xff1a…