8.卷积神经网络基础

8.1 卷积核计算

import torch 
from torch import nn
import matplotlib.pyplot as plt
def corr2d(X,k):#计算二维互相关运算h,w=k.shape#卷积核的长和宽Y=torch.zeros((X.shape[0]-h+1,X.shape[1]-w+1))#创建(X-H+1,X-W+1)的全零矩阵for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i,j]=(X[i:i+h,j:j+w]*k).sum()#不指定dim的话是全部都加载一起#print(X[i:i+h,j:j+w]*k)return Y
X = torch.tensor([[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]])
K = torch.tensor([[0.0, 1.0], [2.0, 3.0]])
Y=corr2d(X, K)

8.2 卷积核边缘计算

import torch 
from torch import nn
import matplotlib.pyplot as plt
def corr2d(X,k):#计算二维互相关运算h,w=k.shape#卷积核的长和宽Y=torch.zeros((X.shape[0]-h+1,X.shape[1]-w+1))#创建(X-H+1,X-W+1)的全零矩阵for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i,j]=(X[i:i+h,j:j+w]*k).sum()#不指定dim的话是全部都加载一起#print(X[i:i+h,j:j+w]*k)return Y
X = torch.ones((6, 8))
X[:, 2:6] = 0
K=torch.tensor([[1.0,-1.0]])
Y=corr2d(X,K)#这样检测之后如果两个水平相邻的元素相同则输出为0,否则则是非0元素
print(Y)

8.3 卷积核学习设计

#卷积层设计--学习卷积核
import torch 
from torch import nn
import matplotlib.pyplot as plt
def corr2d(X,k):#计算二维互相关运算h,w=k.shape#卷积核的长和宽Y=torch.zeros((X.shape[0]-h+1,X.shape[1]-w+1))#创建(X-H+1,X-W+1)的全零矩阵for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i,j]=(X[i:i+h,j:j+w]*k).sum()#不指定dim的话是全部都加载一起#print(X[i:i+h,j:j+w]*k)return Y
class Conv2D(nn.Module):def __init__(self, kernel_size):super().__init__()self.weight=nn.Parameter(torch.rand(kernel_size))self.bias=nn.Parameter(torch.zeros(1))def forward(self,x):return corr2d(x,self.weight)+self.bias
X = torch.ones((6, 8))
X[:, 2:6] = 0
K=torch.tensor([[1.0,-1.0]])
Y = corr2d(X, K)
conv2d=Conv2D(kernel_size=(1,2))
optimizer=torch.optim.SGD(conv2d.parameters(),lr=0.05)
for epoch in range(500):out=conv2d(X)loss=((out-Y)**2).mean()optimizer.zero_grad()loss.backward()optimizer.step()print(f"Epoch {epoch+1}, loss = {loss.item():.4f}")
print(conv2d.weight.data)
print(conv2d.bias.data)

8.4 Q&A

在这里插入图片描述

1.没有什么本质区别,两者其实是一样的
2.权重变形只是数学算法上推理理解的概念,重新索引是指将权重矩阵的坐标与卷积结果的位置匹配上,所以要用到i,j,a,b四个维度的坐标。
3.图像输入进来就是矩阵了,在前面只不过是由于机器学习分类器的缘故必须做flatten操作,卷积神经网络就没有必要做这个操作了,本质上其就是个二维矩阵。
4.没有特定的要求一般不用可变卷积
5.感受野是局部的感受,但是随着卷积肯定能看完所有的图像信息,那我不妨把感受野设计小一些,让模型看的更仔细,然后在深层网络中一步一步提取逐渐变深。
6.当然可以了,有相关的文章。
7.-号在数学中相当于卷积核反过来计算,这样的结果可能有些不一样了,但可能只是和FFT公示推导有关系,深度学习的卷积是正常的做corr相关计算的。
8.平移不变指的是卷积核的数是在这一卷积操作过程中平移不变的,卷积核的大小体现了局部性。

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

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

相关文章

【每天一个知识点】子空间聚类(Subspace Clustering)

“子空间聚类(Subspace Clustering)”是一种面向高维数据分析的聚类方法,它通过在数据的低维子空间中寻找簇结构,解决传统聚类在高维空间中“维度诅咒”带来的问题。子空间聚类简介在高维数据分析任务中,如基因表达、图…

《汇编语言:基于X86处理器》第7章 整数运算(2)

本章将介绍汇编语言最大的优势之一:基本的二进制移位和循环移位技术。实际上,位操作是计算机图形学、数据加密和硬件控制的固有部分。实现位操作的指令是功能强大的工具,但是高级语言只能实现其中的一部分,并且由于高级语言要求与平台无关&am…

JVM故障处理与类加载全解析

1、故障处理工具基础故障处理工具jps:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(LVMID,Local Virtual Machine I…

Python 第三方库的安装与卸载全指南

在 Python 开发中,第三方库是提升效率的重要工具。无论是数据分析、Web 开发还是人工智能领域,都离不开丰富的第三方资源。本文将详细介绍 Python 第三方库的安装与卸载方法,帮助开发者轻松管理依赖环境。 一、第三方库安装方法 1. pip 工具…

RabbitMQ 高级特性之消息分发

1. 为什么要消息分发当 broker 拥有多个消费者时,就会将消息分发给不同的消费者,消费者之间的消息不会重复,RabbitMQ 默认的消息分发机制是轮询,但会无论消费者是否发送了 ack,broker 都会继续发送消息至消费者&#x…

Linux操作系统从入门到实战:怎么查看,删除,更新本地的软件镜像源

Linux操作系统从入门到实战:怎么查看,删除,更新本地的软件镜像源前言一、 查看当前镜像源二、删除当前镜像源三、更新镜像源四、验证前言 我的Linux版本是CentOS 9 stream本篇博客我们来讲解怎么查看,删除,更新国内本…

两台电脑通过网线直连形成局域网,共享一台wifi网络实现上网

文章目录一、背景二、实现方式1、电脑A(主)2、电脑B3、防火墙4、验证三、踩坑1、有时候B上不了网一、背景 两台windows电脑A和B,想通过**微软无界鼠标(Mouse without Borders)**实现一套键盘鼠标控制两台电脑&#xf…

Java Reference类及其实现类深度解析:原理、源码与性能优化实践

1. 引言:Java引用机制的核心地位在JVM内存管理体系中,Java的四种引用类型(强、软、弱、虚)构成了一个精巧的内存控制工具箱。它们不仅决定了对象的生命周期,还为缓存设计、资源释放和内存泄漏排查提供了基础设施支持。…

华为云对碳管理系统的全生命周期数据处理流程

碳管理系统的全生命周期数据处理流程包含完整的数据采集、处理、治理、分析和应用的流程架构,可以理解为是一个核心是围绕数据的“采集-传输-处理-存储-治理-分析-应用”链路展开。以下是对每个阶段的解释,以及它们与数据模型、算法等的关系: 1. 设备接入(IoTDA) 功能: …

大模型安全风险与防护产品综述 —— 以 Otter LLM Guard 为例

大模型安全风险与防护产品综述 —— 以 Otter LLM Guard 为例 一、背景与安全风险 近年来,随着大规模预训练语言模型(LLM)的广泛应用,人工智能已成为推动文档处理、代码辅助、内容审核等多领域创新的重要技术。然而,…

1.2.2 计算机网络分层结构(下)

继续来看计算机网络的分层结构,在之前的学习中,我们介绍了计算机网络的分层结构,以及各层之间的关系。我们把工作在某一层的软件和硬件模块称为这一层的实体,为了完成这一层的某些功能,同一层的实体和实体之间需要遵循…

实训八——路由器与交换机与网线

补充——基本功能路由器:用于不同逻辑网段通信的交换机:用于相同逻辑网段通信的1.网段逻辑网段(IP地址网段):IP地址的前三组数字代表不同的逻辑网段(有限条件下);IP地址的后一组数字…

C++——构造函数的补充:初始化列表

C中,构造函数为成员变量赋值的方法有两种:构造函数体赋值和初始化列表。构造函数体赋值是在构造函数里面为成员变量赋值,如:class Data { public://构造函数体赋值Data(int year,int month,int day){_year year;_month month;_d…

代码随想录|图论|12岛屿周长

leetcode:106. 岛屿的周长 题目 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿是被水包围,并且通过水平方向或垂直方向上相邻的陆地连接而成的。 你可以假设矩阵外均被水包围。在矩阵中恰好拥有…

开发制作模仿参考抄别人的小程序系统

很多老板看见别人公司的小程序系统界面好看,功能强大,使用人数多。就想要抄袭模仿参考别人家的小程序系统。想要了解一下有没有侵权风险,以及怎么开发制作开发制作模仿参考抄别人的小程序系统。首先回答第一个问题,只要你的小程序…

c语言中的数组IV

数组的集成初始化 集成初始化的定位 数组的大小 数组的赋值 不能直接将一个数组a赋值给数组b&#xff0c;只能通过遍历来实现 遍历数组 示例——检索元素在数组中的位置#include <stdio.h> int search(int key,int a[],int length); int main(void){int a[] {2,4,6,7,1,…

LDO选型

目录 一、最大输出电流 二、最大输入电压 三、最大功率&#xff1a;Pmax 四、负载动态调整率 五、输入电源纹波抑制比&#xff1a;PSRR 一、最大输出电流 参考TI LM1117IMPX-3.3/NOPB数据手册 由于LDO转换效率很低&#xff0c;LDO的标称最大电流 ≥ 实际最大负载电流 1…

飞算JavaAI:重构Java开发的“人机协同”新范式

目录一、从需求到架构&#xff1a;AI深度参与开发“顶层设计”1.1 需求结构化&#xff1a;自然语言到技术要素的准确转换1.2 架构方案生成&#xff1a;基于最佳实践的动态匹配二、编码全流程&#xff1a;从“手写代码”到“人机协同创作”2.1 复杂业务逻辑生成&#xff1a;以“…

解决SQL Server SQL语句性能问题(9)——SQL语句改写(7)

9.4.15. 消除join场景一 与Oracle等其他关系库类似,SQL Server中,join作为基本语法用于SQL语句中相关表之间的连接,有些场景中,join既可以增强SQL语句的可读性,同时,又可以提升SQL语句的性能,但有些场景中,join会导致CBO为SQL语句产生次优的查询计划,进而出现SQL语句…

深度学习-数据准备

一、数据准备 1.1定义 数据准备&#xff08;Data Preparation&#xff09; 是数据分析与机器学习流程中的核心环节&#xff0c;指将原始数据转换为适合分析或建模的结构化格式的过程。 1.2组成 数据准备主要由两个部分组成&#xff0c;一个是划分数据集&#xff0c;一个是构建…