神经网络入门
神经网络的基本骨架

1. nn.Module的使用
- 所有的模型都要继承 Module 类
- 需要重写初始化函数和运算步骤函数
eg:
import torch.nn as nn
import torch.nn.functional as Fclass Model(nn.Module): # 继承父类Module def __init__(self): # 重写初始化函数super().__init__() # 调用父类初始化self.conv1 = nn.Conv2d(1, 20, 5)self.conv2 = nn.Conv2d(20, 20, 5)def forward(self, x): # 神经网络的运算步骤--前向传播x = F.relu(self.conv1(x)) # x->卷积->非线性return F.relu(self.conv2(x)) # x->卷积->非线性
代码示例:
import torch
from torch import nnclass Kun(nn.Module):def __init__(self):super().__init__()def forward(self, input):output = input+1 # 实现输出加1return outputkun = Kun()
x = torch.tensor(1.0)
output = kun(x)
print(output) # tensor(2.)
2. 卷积
conv2可选参数

卷积计算过程示意:

import torch# 输入图像(5*5)
input = torch.tensor([[1, 2, 0, 3, 1],[0, 1, 2, 3, 1],[1, 2, 1, 0, 0],[5, 2, 3, 1, 1],[2, 1, 0, 1, 1]]) # 输入tensor数据类型的二维矩阵# 卷积核
kernel = torch.tensor([[1, 2, 1],[0, 1, 0],[2, 1, 0]])print(input.shape)
print(kernel.shape)
torch.Size([5, 5])
torch.Size([3, 3])
如果不调整尺寸会报错:Expected 3D(unbatched) or 4D(batched) input to conv2d, but got input of size: [5, 5]
所以需要调整
input = torch.reshape(input, (1, 1, 5, 5))
kernel = torch.reshape(kernel, (1, 1, 3, 3))
output = F.conv2d(input, kernel, stride=1)
print(output)--------------------------------------------------------------------------
tensor([[[[10, 12, 12],[18, 16, 16],[13, 9, 3]]]])
stride可以选择移动的步长
output2 = F.conv2d(input, kernel, stride=2)
print(output2)
----------------------------------------------------------------------------
tensor([[[[10, 12],[13, 3]]]])
padding进行填充(默认填充0)
output3 = F.conv2d(input, kernel, stride=1, padding=1)
print(output3)
-----------------------------------------------------------------------------
tensor([[[[ 1, 3, 4, 10, 8],[ 5, 10, 12, 12, 6],[ 7, 18, 16, 16, 8],[11, 13, 9, 3, 4],[14, 13, 9, 7, 4]]]])
示例代码:
import torch
import torch.nn.functional as F
# 输入图像(5*5)
input = torch.tensor([[1, 2, 0, 3, 1],[0, 1, 2, 3, 1],[1, 2, 1, 0, 0],[5, 2, 3, 1, 1],[2, 1, 0, 1, 1]]) # 输入tensor数据类型的二维矩阵# 卷积核
kernel = torch.tensor([[1, 2, 1],[0, 1, 0],[2, 1, 0]])
# 调整输入的尺寸
# 如果不调整尺寸会报错
# Expected 3D(unbatched) or 4D(batched) input to conv2d, but got input of size: [5, 5]
input = torch.reshape(input, (1, 1, 5, 5))
kernel = torch.reshape(kernel, (1, 1, 3, 3))
# print(input.shape) # torch.Size([1, 1, 5, 5])
# print(kernel.shape) # torch.Size([1, 1, 3, 3])output = F.conv2d(input, kernel, stride=1)
print(output)output2 = F.conv2d(input, kernel, stride=2)
print(output2)output3 = F.conv2d(input, kernel, stride=1, padding=1)
print(output3)
相关文章:
神经网络入门
神经网络的基本骨架 1. nn.Module的使用 所有的模型都要继承 Module 类需要重写初始化函数和运算步骤函数 eg: import torch.nn as nn import torch.nn.functional as Fclass Model(nn.Module): # 继承父类Module def __init__(self): # 重写初始化函数super()…...
【面试经典150题】多数元素
🔗题目链接 ✈题目描述: 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 ⌊ n/2 ⌋表示n/2结果向下取…...
c#垃圾回收(Garbage Collection)
在C#中,垃圾回收(Garbage Collection)是一种自动管理内存的机制。它负责跟踪和释放不再使用的内存,以便程序可以有效地使用内存资源。 C#中的垃圾回收器是由.NET运行时(CLR)提供和管理的。它使用了一种叫做…...
vue 基于element-plus el-button封装按钮组件
封装组件的原则是:组件只是数据流通的一个管道,不要糅合太多的逻辑在里面,是一个纯组件,还要根据自己项目的业务场景做具体的处理。 // MyButton.vue // 基于element-plus中el-button来封装按钮 <template><el-button c…...
smbus只能再python2.7下运行?不能再python3.8下运行吗?
不是的,SMBus并不只能在Python 2.7下运行,它也可以在Python 3.8及更高版本下运行。SMBus是用于访问系统上的I2C设备(Inter-Integrated Circuit,一种串行通信协议)的Python库,它应该与Python 3.8兼容。 要在…...
python中is和==的区别
is 和 的区别 在Python中,is和是两个用于比较对象的操作符,它们有不同的作用和用法。 is操作符: is用于比较两个对象的身份标识,即判断两个对象是否引用同一个内存地址的对象。当is操作符用于比较两个对象时,它会判断…...
Viobot回环使用
Viobot回环是使用词袋匹配的方式,,当新的关键帧能够匹配词袋里面记录过的关键帧时,触发回环,将设备的当前位姿拉到历史位姿。 一.上位机操作 词袋使用方法 连接上设备,先停止算法。UI上点 设置 选到 loop 选项卡&…...
React钩子函数之forward结合useImperativeHandle钩子的基本使用
React钩子函数是React框架中非常重要的一部分,其中forward和useImperativeHandle是两个常用的钩子函数。这两个钩子函数可以结合使用,用来实现一些高级的功能。 首先,让我们来了解一下forward钩子函数。它的作用是将父组件中的props传递给子…...
c++中移动语义和完美转发
C 中的移动语义和完美转发是 C11 引入的两个重要特性,它们分别用于提高性能和灵活性。 移动语义(Move Semantics): 移动语义允许有效地将资源(如堆上分配的内存或其他资源)从一个对象转移到另一个对象,而…...
【linux命令讲解大全】040. 文件操作:使用touch命令创建和更新文件
文章目录 touch补充说明语法选项参数示例 从零学 python touch 创建新的空文件或更新已存在文件的时间标签。 补充说明 touch命令具有两个功能: 更新已存在文件的时间标签为当前系统时间(默认方式),文件的数据保持不变。创建新…...
Redis之MoreKey问题及Scan命令解读
目录 MoreKey问题讨论 Scan命令 Sscan命令 Hscan命令 Zscan命令 MoreKey问题讨论 keys * 查看当前库所有key 对于海量数据执行key *会造成严重服务卡顿、影响业务。在实际环境中最好不要使用。生产制造过程中keys * / flushdb/flushall等危险命令以防止误删误用。 大量的…...
QA工具开发流程
前言 在项目上线前期,这边根据需求制作了一套QA测试工具。主要分为以下四个模块的测试**图1** **数值测试:**主要包括了角色的等级变更、游戏里货币的变更、(目前已制作的)游戏道具的数量变更。这些可能归一为一类测试模型**动画…...
JSON.toJSONString首字母大小写问题
前言 开发过程中遇到的,对象转字符串时,有个字段首字母是大写的,转换之后就变成了小写,在这里记录下 代码示例 String jsonString JSON.toJSONString(obj,SerializerFeature.PrettyFormat,SerializerFeature.WriteMapNullValue,…...
ant-vue1.78版a-auto-complete表单自动搜索返回列表中的关键字标红
a-auto-complete表单自动搜索返回列表中的关键字标红 通常在做关键字标红的场景,都是后端返回html结构,前端直接渲染实现,但是如果需要前端处理的话,实现也是很简单的,接下来我直接上应用场景吧 应用场景就是通过关键…...
Elasticsearch 优化
Elasticsearch 优化 2.1硬件选择 Elasticsearch 的基础是 Lucene ,所有的索引和文档数据是存储在本地的磁盘中,具体的 路径可在 ES 的配置文件 ../config/elasticsearch.yml 中配置,如下: #----------------------------…...
spring boot的自动装配原理
spring boot的自动装配原理 解释和使用关键技术思想总结 解释和使用 自动装配是什么:自动将第三方组件的bean装载到ioc容器里,不需要开发人员再去写bean相关的一些配置 spring boot怎么做:在启动类上加SpringBootApplication注解就可以实现自…...
走进低代码平台| iVX-困境之中如何突破传统
前言: “工欲善其事,必先利其器”,找到和使用一个优质的工具平台,往往会事半功倍。 文章目录 1️⃣认识走近低代码2️⃣传统的低代码开发3️⃣无代码编辑平台一个代码生成式低代码产品iVX受面性广支持代码复用如何使用? 4️⃣总结…...
【UIPickerView案例03-点餐系统之随机点餐 Objective-C语言】
一、先来看看我们这个示例程序里面,随机点餐是怎么做的 1.点击:“随机点餐”按钮 大家能想到,它是怎么实现的吗 1)首先,点击”随机点餐“按钮,的时候,你要让这个pickerView,进行随机选中,那么,得监听它的点击 2)然后呢,让pickeView选中数据, 3)然后呢,把那个…...
论文阅读_扩散模型_SDXL
英文名称: SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis 中文名称: SDXL:改进潜在扩散模型的高分辨率图像合成 论文地址: http://arxiv.org/abs/2307.01952 代码: https://github.com/Stability-AI/generative-models 时间: 2023-…...
云原生Kubernetes:二进制部署K8S多Master架构(三)
目录 一、理论 1.K8S多Master架构 2.配置master02 3.master02 节点部署 4.负载均衡部署 二、实验 1.环境 2.配置master02 3.master02 节点部署 4.负载均衡部署 三、总结 一、理论 1.K8S多Master架构 (1) 架构 2.配置master02 (1)环境 关闭防…...
基于FPGA的伺服驱动系统:电流环控制与多环路反馈、SVPWM及编码器协议实现的研究
伺服驱动FPGA电流环,包含坐标变换,电流环,速度环,位置环,电机反馈接口,SVPWM,编码器协议,电流环和编码器协议都是FPGA里实现的伺服驱动系统里玩FPGA可不是闹着玩的,尤其是…...
远程协助工具
# 详见:https://mp.weixin.qq.com/s/sY-KrOqpY3C1JUeiELEJNw # 来源:https://chat.qwen.ai/# ToDesk https://www.todesk.com/# 向日葵 https://sunlogin.oray.com/# TeamViewer https://www.teamviewer.com/# AnyDesk https://anydesk.com/ https://any…...
B站成分检测器:3分钟快速识别评论区同好身份
B站成分检测器:3分钟快速识别评论区同好身份 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分油猴脚本,主要为原神玩家识别 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-comment-checker 还在为B站评论区难以分辨用户…...
springboot+vue基于web的在线投稿系统的设计与开发
目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析审稿流程模块系统管理模块技术实现要点项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块分析 用户管理模块 注册与登录…...
大数据领域Hive与Spark的结合使用案例
大数据领域Hive与Spark的结合使用案例 关键词:Hive、Spark、大数据处理、数据仓库、分布式计算、ETL、数据分析 摘要:在大数据技术栈中,Hive作为基于Hadoop的数据仓库工具,擅长海量数据的存储与离线分析;Spark作为高性能分布式计算引擎,在复杂数据处理和实时计算领域表现…...
从Prompt到Agent:收藏这份LLM应用落地演进指南,小白程序员必备!
本文介绍了LLM应用落地的演进过程,从最初的Prompt工程阶段,到Chain编排阶段,再到最新的Agent阶段。文章详细阐述了每个阶段的原理、优缺点及应用实例,并提供了基于Golang的Agent实现示例。通过学习本文,读者可以了解LL…...
Qwen3-4B-Thinking-GGUF开源模型:Apache-2.0协议下合规商用注意事项
Qwen3-4B-Thinking-GGUF开源模型:Apache-2.0协议下合规商用注意事项 1. 引言:当开源模型遇上商业应用 最近,一个名为Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF的模型在开发者圈子里引起了不小的关注。这个模型基于Qwen3-4B-Thinkin…...
Qwen-Turbo-BF16数据库课程设计:智能问答系统开发
Qwen-Turbo-BF16数据库课程设计:智能问答系统开发 想象一下,你正在上一门数据库课程。老师布置了一个课程设计:开发一个学生信息管理系统。你需要设计表结构,写SQL查询,还要做个简单的界面。你埋头苦干,终…...
NiceGUI实战:打造动态路由导航栏的3个关键技巧
1. 为什么需要动态路由导航栏? 如果你用过NiceGUI开发Web应用,肯定遇到过这样的尴尬:想做个导航菜单,却发现官方压根没提供现成组件。这就像装修房子时发现建材市场不卖门把手——虽然不影响主体结构,但用起来总感觉少…...
springboot+vue基于web的社区维修平台
目录同行可拿货,招校园代理 ,本人源头供货商功能模块划分技术实现要点扩展性设计项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块划分 用户管理模块 注册与登录:支…...
