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 F


class 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案例,明天我会继续学习的!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从零开始学习Netty - 学习笔记 -Netty入门【自定义编码器解码器】

自定义编码器解码器 通过一个简单案例&#xff0c;我们自己去实现一个编码器 和解码器 实现思路 编码器&#xff08;Encoder&#xff09;实现&#xff1a; 在编码器中&#xff0c;实现了 ByteToMessageCodec<Message> 类&#xff0c;并覆盖了 encode() 方法来处理消息的编…

【HarmonyOS】Dev Eco Studio4.0安装教程

目录 下载安装开发工具配置 下载 Dev Eco Studio4.0下载连接→https://developer.huawei.com/consumer/cn/next/deveco-studio/ 安装 点击Next 选择安装目录。点击Next 勾选创建桌面快捷方式和环境变量&#xff0c;点击Next 点击Install&#xff0c;安装 等待安装 选…

Node.js最准确历史版本下载(以下载Node.js16.17.1版本为例)

先进入官网:Node.js https://nodejs.org/en 括号中LTS代表稳定版本. 嫌其他冗余博客帖子多&#xff0c;找起来费眼睛,可以到/release下载:Node.js,在blog后面加/release https://nodejs.org/en/blog/release/ 点击next翻页,跟上面同样的步骤

做分析用什么工具

做分析用什么工具 导读 数据分析是数据辅助决策的最后一公里&#xff0c;是最终的数据可视化展示与探索分析的部分&#xff0c;选择使用最适合的数据展示方式&#xff0c;可以帮助分析人员大大提升分析效率。 问题&#xff1a; ● 纠结选择哪个工具 ● 纠结从哪里学起&#x…

Java异常的介绍与处理

一、异常与错误(Error)的区别&#xff1a; 异常&#xff08;Exception&#xff09;和错误&#xff08;Error&#xff09;都是指程序执行过程中的问题&#xff0c;但它们之间存在一些重要的区别。 异常&#xff08;Exception&#xff09;&#xff1a; 异常表示程序在执行期间可能…

Memcached介绍和详解

Memcached介绍 Memcached是一个高性能的分布式内存对象缓存系统&#xff0c;它通过在内存中缓存数据来减少数据库负载&#xff0c;加快动态Web应用程序的响应速度。 以下是Memcached的一些关键特点和作用&#xff1a; 分布式缓存&#xff1a;Memcached是分布式的&#xff0c;不…

Android高级工程师面试实战,三幅图给你弄懂EventBus核心原理

阿里技术一面-35min 自我介绍 Android 有没有遇到OOM问题(有遇到内存泄漏问题)Handler机制ThreadLocalActivity启动到加载View过程View绘制过程LinearLayout (wrap_content) & TextView (match_parent) 最终结果???OKHttp(1. 为什么选择它&#xff1f; 2. 性能了解不…

阿里云服务器几核几G怎么选择?带宽多少合适?

阿里云服务器配置怎么选择&#xff1f;CPU内存、公网带宽和系统盘怎么选择&#xff1f;个人开发者或中小企业选择轻量应用服务器、ECS经济型e实例&#xff0c;企业用户选择ECS通用算力型u1云服务器、ECS计算型c7、通用型g7云服务器&#xff0c;阿里云服务器网aliyunfuwuqi.com整…

Java 学习和实践笔记(27):Object类的基本特性、toString方法以及IDEA的部分快捷键介绍

Object类基本特性&#xff1a; 1.Object类是所有类的父类&#xff0c;所有的Java对象都拥有Object类的属性和方法&#xff08;注意拥有并不等于可以直接使用&#xff09; 2.如果在类的声明中未使用extends&#xff0c;则默认继承Object类。 toString方法是Object类里定义的一个…

Word中的文档网格线与行距问题

在使用Word编辑文档时&#xff0c;经常会发生以下动图展示的这种情况&#xff1a; 上面的动图里&#xff0c;将文字大小放大到某个字号时&#xff0c;单倍行距的间距突然增加很多。造成这种情况的原因是文档中定义了网格线&#xff0c;并且设置了对齐到网格线。如果取消文档中…

[清爽快捷] Ubuntu上多个版本的cuda切换

做到真正的一行代码搞定&#xff0c;只需要修改对应软链接&#xff0c;就可以轻松实现快捷切换cuda 查看已安装的cuda版本有哪些 一般如果我们都是使用默认位置安装cuda的话&#xff0c;那么其安装路径都是/usr/local。如果要查看该目录下已经安装有哪些版本的cuda&#xff0c…

Git分布式管理-头歌实验本地版本库

一、本地版本库创建 任务描述 本地Git操作三部曲是“修改-添加-提交”&#xff0c;即先要在本地仓库进行添加、删除或编辑等修改&#xff0c;然后将本地所做的修改添加至暂存区。添加至暂存区的这些本地修改&#xff0c;并未提交到本地仓库&#xff0c;需要执行提交命令才能将暂…

SPSS26安装后无法启动,提示:应用程序的并行配置不正确

以下的解决方法供参考&#xff1a; 1、安装jdk并配置 2、 找到安装目录\Statistics\26\VC9下的vcredist_x64.exe&#xff0c;打开安装并选择“repair”&#xff0c;安装完成后重启&#xff0c;一般可以成功。 3、若还不行&#xff0c;安装较新的C运行库&#xff0c;再试试。 …

勒索病毒攻击新玩法,先盗数据再勒索

2019年是勒索病毒团伙针对企业进行勒索攻击爆发的一年&#xff0c;全球多个国家的政府组织机构、企事业单位都成为了勒索病毒团伙攻击的目标&#xff0c;勒索病毒也成为了网络安全最大的网络安全威胁&#xff0c;新的勒索病毒不断涌现&#xff0c;旧的勒索病毒不断变种&#xf…

1.1 深度学习和神经网络

首先要说的是&#xff1a;深度学习的内容&#xff0c;真的不难。你要坚持下去。 神经网络 这就是一个神经网络。里面的白色圆圈就是神经元。神经元是其中最小的单位。 神经网络 单层神经网络&#xff1a; 感知机 &#xff08;双层神经网络&#xff09; 全连接层&#xff1a; …

DHCP自动获取IP地址实验(华为)

思科设备参考&#xff1a;DHCP自动获取IP地址实验&#xff08;思科&#xff09; 一&#xff0c;实验目的 路由器搭载DHCP&#xff0c;让PC通过DHCP自动获取IP地址 二&#xff0c;不划分vlan--全局地址池 实验拓扑 配置命令 Router <Huawei>system-view [Huawei]ip po…

十三、类的继承、访问级别

类的继承与访问控制 类的继承 使用sealed修饰的类&#xff0c;是私有类&#xff0c;不能作为基类使用C#中一个类&#xff0c;只能有一个父类&#xff0c;但是可以实现多个接口子类的访问级别不能超过父类的访问级别 using System; using System.Collections.Generic; using S…

HDFS简介与部署以及故障排错(超简单)

文章目录 一、HDFS介绍1、简介2、结构模型3、文件写入过程4、文件读取过程5、文件块的存放6、存储空间管理机制6.1 文件删除和恢复删除6.2 复制因子配置6.3 文件命名空间6.4 数据复制机制 二、环境搭建&#xff08;单机版&#xff09;1、修改主机名2、配置ssh免密登录3、Hadoop…

HTML表单标签,web前端开发新技术

1、ant-design的使用总结及常用组件和他们的基本用法? ant-design为React&#xff0c;Angular和Vue都提供了组件&#xff0c;同时为PC和移动端提供了常用的基础组件。ant-design提供的demo非常的丰富并且样式能够基本的覆盖开发需求。antd的Demo因为是多人编写的&#xff0c;…

(vue)适合后台管理系统开发的前端框架

(vue)适合后台管理系统开发的前端框架 1、D2admin 开源地址&#xff1a;https://github.com/d2-projects/d2-admin 文档地址&#xff1a;https://d2.pub/zh/doc/d2-admin/ 效果预览&#xff1a;https://d2.pub/d2-admin/preview/#/index 开源协议&#xff1a;MIT 2、vue-el…