当前位置: 首页 > news >正文

12.02 深度学习-卷积

# 卷积 是用于图像处理 能够保存图像的一些特征 卷积层 如果用全连接神经网络处理图像 计算价格太大了 图像也被转为线性的对象导致失去了图像的空间特征 只有在卷积神经网络cnn的最后一层使用全连接神经网络

# 图像处理的三大任务

# 目标检测 对图像中的目标进行框出来

# 图像分割

# 图像分类

# 卷积核的参数是要变的 这个值有个最优解 线性回归求这个最优解

# 卷积的计算 先卷再积 卷 左右上下移动 积 对应位置矩阵 对应位置相乘再相加 最后得到一个特征矩阵跟卷积结果一样的size

# import os

# current_path=os.path.dirname(__file__) #  将脚本文件所在的目录路径赋值给变量 current_path, 所在文件夹路径

# path2=os.path.relpath(路径1) # 获取路径1 文件到当前文件的相对路径

# 在神经网络中加入卷积层 为卷积神经网络 cnn

# cv2读 图像 然后 torch创建卷积核

import os

import cv2

from torch import nn

import torch

import torch.nn.functional as F

import matplotlib.pyplot as plt

def demo1():

    path="assets/1.png"

    # print(path)

    # 读取图像

    img=cv2.imread(path)

    # 创建卷积核 一个卷积核就是卷积层

    conv=nn.Conv2d(in_channels=3,out_channels=1,kernel_size=3,stride=1,padding=0)  # 传入输入图像的通道数 和输出的特征图数量 卷积核大小   步长(卷积核移动的规格) 填充

    # 这个会自动初始化一个卷积和的参数

    # conv(图像tensor数组) 传入图像进行卷积 得到特征图 tensor 的应该为 n,c,h,w 或者c,h,w

    # 传入图像的通道数应该跟in_channels一致 且数据类型为tensor.float

    # 转为tensor,并归一化到[0, 1]  

    img = torch.tensor(img, dtype=torch.float32) / 255.0

   

    # 转换维度

    img=img.permute(2,0,1).unsqueeze(0)

    # print(img.shape)        

    # 卷积

    img=conv(img) # 卷积操作的tensor 必须为float

    # print(img.shape)

    # 用 plt 显示出来

    plt.imshow(img[0][0].detach().numpy(),cmap="gray")

    plt.show()

    pass

def demo2():

    # 一个四通道的图像 通过卷积核处理 这个卷积核应该也有四个通道 对应处理rgba 也可以说是4个卷积核吧 然后 每个通道进行卷积 然后加起来 为一个特征图 输出多个特征图 就要有多个卷积核每个卷积核参数不一样

    # 然后再卷积的话 上面输出的特征图数量就会被下一个卷积和当做通道

    # 如果 一个四通道的卷积核 核大小为3 且有偏置 如果输出32和特征图 那么有 32*4*3*3+32 个参数 特征图数量*每个卷积核的通道数 *卷积核的规格 +偏置数 每一个卷积核对应1个偏置

    # 输出多个特征图 后面每一个特征图 对图像注意的地方不同

    # 边缘填充: 通过上面的卷积计算,我们发现最终的特征图比原始图像要小,如果想要保持图像大小不变, 可在原图周围添加padding来实现。更重要的,边缘填充还更好的保护了图像边缘数据的特征。

    # 让边缘的数据利用更充分 在原图上进行边缘填充

   

    # 卷积结果 特征图的大小的计算 (W-F+2P) / S +1  W:图像的大小 W*W 卷积核大小F*F 边缘填充 P 步长:S 宽高不一样就各自算各自的 宽高 都带一遍公式


 

    pass

# 构建卷积神经网络

def demo3():

    class MyNet(nn.Module):

        def __init__(self, *args, **kwargs):

            super().__init__(*args, **kwargs)

            # 卷积层

            self.conv1=nn.Conv2d(in_channels=1,out_channels=32,kernel_size=3,stride=1,padding=0)

            self.conv2=nn.Conv2d(in_channels=32,out_channels=128,kernel_size=3,stride=1,padding=0)

            self.conv3=nn.Conv2d(in_channels=128,out_channels=512,kernel_size=3,stride=1,padding=0)

            # 线性层 线性层的输入是 特征的数量 特征的总数量是不是 图片数乘图片规格 表示每一个特征图的每个点啊

            self.fc=nn.Linear(512*26*26,10)

        # 前向传播

        def forward(self,x):

            # 每一层用激活函数激活

            x=F.relu(self.conv1(x))

            x=F.relu(self.conv2(x))

            x=F.relu(self.conv3(x))

            # 线性层全连接输出 先展平为2维 因为线性层输入是一个二维的矩阵

            x=x.view(x.shape[0],-1) # x.size(0):这部分获取x的第0维的大小。在PyTorch中,张量的维度通常按照以下顺序表示

            # x.view(x.size(0),-1):这个操作将x重塑为一个新的形状,其中第0维(batch_size)保持不变,而其他维度被“展平”(flattened)为一个长向量。这是在很多神经网络架构中常见的操作,

            # 特别是在将卷积层的输出传递给全连接层(fully connected layer)之前。因为全连接层期望的输入是一个二维张量,其中第一维是批次大小,第二维是每个样本的特征数量。

            return F.softmax(self.fc(x))

    net1=MyNet()

    input=torch.randn(4,1,32,32,dtype=torch.float32)

    output=net1.forward(input)

    print(output)

# 卷积参数共享

# 卷积神经网络只考虑卷积核的参数 以卷积核为单位 全链接 以每一个节点为单位而且还要与上层全链接 参数个数直接爆炸          

# 卷积就是把这些数据放到多个维度上单维度的数量就少了

if __name__=="__main__":

    # demo1()

    # demo2()

    demo3()

    pass

相关文章:

12.02 深度学习-卷积

# 卷积 是用于图像处理 能够保存图像的一些特征 卷积层 如果用全连接神经网络处理图像 计算价格太大了 图像也被转为线性的对象导致失去了图像的空间特征 只有在卷积神经网络cnn的最后一层使用全连接神经网络 # 图像处理的三大任务 # 目标检测 对图像中的目标进行框出来 # 图…...

MySQL 主从同步一致性详解

MySQL主从同步是一种数据复制技术,它允许数据从一个数据库服务器(主服务器)自动同步到一个或多个数据库服务器(从服务器)。这种技术主要用于实现读写分离、提升数据库性能、容灾恢复以及数据冗余备份等目的。下面将详细…...

Spring源码导入idea时gradle构建慢问题

当我们将spring源码导入到idea进行构建的时候,spring采用的是gradle进行构建,默认下注在依赖是从https://repo.maven.apache.org会特别慢,需要改为国内的镜像地址会加快速度。 将项目中build.gradle配置进行调整: repositories …...

Dockerfile 安装echarts插件给java提供服务

java调用echarts插件,生成图片保存到磁盘然后插入到pptx中报表。 Dockerfile文件内容: #基础镜像,如果本地仓库没有,会从远程仓库拉取 openjdk:8 FROM docker.io/centos:centos7 #暴露端口 EXPOSE 9311 # 避免centos 日志输出 …...

Springboot小知识(1):启动类与配置

一、启动类(引导类) 在通常情况下,你创建的Spring应用项目都会为你自动生成一个启动类,它是这个应用的起点。 在Spring Boot中,引导类(也称为启动类,通常是main方法所在的类)是整个…...

[CISCN 2019华东南]Web11

[CISCN 2019华东南]Web11 给了两个链接但是都无法访问 这里我们直接抓包试一下 我们插入X-Forwarded-For:127.0.0.1 发现可以修改了右上角的IP地址,从而可以进行注入 {$smarty.version} 查看版本号 if标签执行PHP命令 {if phpinfo()}{/if} 查看协议 {if system(…...

Cypress内存溢出奔溃问题汇总

内存溢出报错信息 <--- Last few GCs ---> [196:0xe58001bc000] 683925 ms: Scavenge 1870.7 (1969.9) -> 1865.6 (1969.9) MB, 6.07 / 0.00 ms (average mu 0.359, current mu 0.444) task; [196:0xe58001bc000] 683999 ms: Scavenge 1872.4 (1969.9) -> 1867.1…...

树莓派4B--OpenCV安装踩坑

报错&#xff1a; Source directory: /tmp/pip-install-pv7l9r25/opencv-python_08fdf5a130a5429f89b0e0eaab39a329 Working directory: /tmp/pip-install-pv7l9r25/opencv-python_08fdf5a130a5429f89b0e0eaab39a329/_skbuild/linux-armv7l-3.7/cmake-build Please check the i…...

电子电气架构 --- 面向服务的汽车诊断架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…...

Pytest --capture 参数详解:如何控制测试执行过程中的输出行为

--capture 选项用于控制测试用例执行过程中标准输出&#xff08;stdout&#xff09;和标准错误输出&#xff08;stderr&#xff09;的捕获行为。 --capture 的选项值&#xff1a; fd&#xff08;默认&#xff09; 捕获文件描述符级别的输出&#xff08;stdout 和 stderr&#x…...

IS-IS的原理

IS-IS的基本概念&#xff1a; 概述&#xff1a; IS-IS&#xff0c;中间系统到中间系统&#xff0c;是ISO国际标准化组织为它的无连接网络协议设计的一种动态路由协议 IS-IS支持CLNP网络和IP网络&#xff0c;采用数据链路层封装&#xff0c;区别于ospf只支持IP网络&#xff0…...

C++(4个类型转换)

1. C语言中的类型转换 1. 隐式 类型转换&#xff1a; 具有相近的类型才能进行互相转换&#xff0c;如&#xff1a;int,char,double都表示数值。 2. 强制类型转换&#xff1a;能隐式类型转换就能强制类型转换&#xff0c;隐式类型之间的转换类型强相关&#xff0c;强制类型转换…...

Ubuntu20.04安装NVIDIA显卡驱动

Ubuntu20.04安装NVIDIA显卡驱动 参考资料&#xff1a;https://blog.csdn.net/weixin_39244242/article/details/136282614?fromshareblogdetail&sharetypeblogdetail&sharerId136282614&sharereferPC&sharesourceqq_37397652&sharefromfrom_link 成功配置…...

速盾:介绍一下高防cdn的缓存响应事什么功能?

高防CDN&#xff08;Content Delivery Network&#xff09;是一种基于分布式缓存技术的网络加速服务&#xff0c;能够提供强大的缓存响应功能。它的缓存响应功能主要包括缓存加速和智能缓存两个方面。 首先&#xff0c;高防CDN的缓存加速功能是指通过在全球范围内部署大量的缓…...

Nuclei-快速漏洞扫描器

Nuclei-快速漏洞扫描器 声明 学习内容来自 B 站UP主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 ✍&#x1f3f…...

linux网络抓包工具

linux网络抓包工具 一、tcpdump1.1 基本用法1.2 龙芯平台实例操作 二、wireshark2.1 主要功能2.2 龙芯平台实例操作 一、tcpdump tcpdump 指令可列出经过指定网络界面的数据包文件头&#xff0c;可以将网络中传送的数据包的 “头” 完全截获下来提供分析。它支持针对网络层、协…...

详解桥接模式

引言 在开发过程中&#xff0c;可能会遇到系统设计有多种维度变化的情况&#xff0c;比如我们想画一幅五彩斑斓的画&#xff0c;需要用到12个颜色&#xff0c;但是需要粗细不同的线条&#xff08;粗、中、细&#xff09;&#xff0c;如果用蜡笔&#xff0c;就需要粗中细三种蜡笔…...

探索AI新世界!热门工具与学习资源免费获取

​抖知书老师推荐&#xff1a; 人工智能技术的迅速发展让人们既充满期待又有些迷茫。有人担忧被AI技术取代&#xff0c;有人却积极拥抱这场科技浪潮。无论你处于哪种心态&#xff0c;人工智能已经深入到我们生活的方方面面。如果你希望轻松掌握最新的AI工具与动态&#xff0c;…...

vue3项目搭建-6-axios 基础配置

axios 基础配置 安装 axios npm install axios 创建 axios 实例&#xff0c;配置基地址&#xff0c;配置拦截器,目录&#xff1a;utils/http.js 基地址&#xff1a;在每次访问时&#xff0c;自动作为相对路径的根 // axios 基础封装 import axios from "axios";…...

Django 视图层

from django.shortcuts import render, HttpResponse, redirectfrom django.http import JsonResponse1. render: 渲染模板 def index(request):print(reverse(index))return render(request, "index.html")return render(request, index.html, context{name: lisi})…...

工业质检新突破:如何用GLAD扩散模型实现高精度无监督异常检测(附MVTec-AD实测)

工业质检革命&#xff1a;GLAD扩散模型如何重塑无监督缺陷检测 在制造业智能化转型浪潮中&#xff0c;工业质检环节正经历着从人工目检到AI视觉的范式转移。传统基于规则或监督学习的检测系统面临标注成本高、泛化能力弱等痛点&#xff0c;而无监督异常检测技术凭借"零样本…...

各行业开发经验全面解析,本凡科技助你快速提升项目成功率

在当今快速发展的市场中&#xff0c;各行业的开发经验已成为决定项目成败的关键因素。每个行业都面临独特的挑战和需求&#xff0c;了解这些特性有助于企业制定有效的开发策略。例如&#xff0c;科技行业通常需要快速响应市场变化&#xff0c;而食品行业则需关注合规性和安全标…...

百度快速排名优化技术(百度seo排名优化)

百度快速排名优化技术是一种针对搜索引擎结果页面&#xff08;SERP&#xff09;排名优化的技术手段&#xff0c;通过优化网站的内容、结构和用户体验等方面&#xff0c;提高网站在搜索引擎中的排名&#xff0c;从而获得更多的流量和潜在客户。下面&#xff0c;我将介绍百度快速…...

Cursor Pro功能解锁指南:突破限制的完整技术方案

Cursor Pro功能解锁指南&#xff1a;突破限制的完整技术方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial re…...

linux内核故障分析及调测工具使用能力

Linux内核的故障分析和调测工具非常丰富&#xff0c;根据使用场景大致可以分为静态分析/代码检查、动态跟踪、性能分析、内存调试、以及崩溃转储分析这几大类。 下面我为你整理了典型工具的归类表&#xff0c;方便快速查阅&#xff0c;后面再详细解读几个核心工具的实战能力。 …...

LangGraph实战:5分钟给你的AI助手装上‘对话记忆’,告别每轮都是新朋友

LangGraph实战&#xff1a;5分钟为AI助手构建对话记忆系统 每次和AI对话都像初次见面&#xff1f;这个问题困扰着许多开发者。想象一下&#xff0c;你告诉助手"我叫Alex"&#xff0c;下一句问"你知道我的名字吗&#xff1f;"&#xff0c;它却一脸茫然地回答…...

OpenClaw核心揭秘:Agentic Loop如何驱动AI持续思考与行动?

上一篇讲了 Gateway——它像餐厅前台&#xff0c;负责接收订单、分发任务。 但订单到了厨房&#xff0c;厨师是怎么做菜的&#xff1f; 这就是 Agentic Loop&#xff08;推理循环&#xff09;的事了。 它是 OpenClaw 的"大脑"&#xff0c;决定 Agent 如何思考、如何行…...

深入解析 Linux 内核中的 PCI 中断向量分配机制:pci_alloc_irq_vectors

1. PCI中断向量分配机制入门指南 第一次接触PCI设备中断处理时&#xff0c;我被各种专业术语搞得晕头转向。直到在项目里实际调试一个网卡驱动时&#xff0c;才真正理解pci_alloc_irq_vectors这个函数的重要性。想象一下&#xff0c;你的电脑就像个繁忙的快递分拣中心&#xf…...

MCprep插件终极指南:从Minecraft世界到专业动画的完整解决方案

MCprep插件终极指南&#xff1a;从Minecraft世界到专业动画的完整解决方案 【免费下载链接】MCprep Blender python addon to increase workflow for creating minecraft renders and animations 项目地址: https://gitcode.com/gh_mirrors/mc/MCprep 你是否曾梦想将Min…...

3步实现Windows系统极致优化:Win11Debloat专业指南

3步实现Windows系统极致优化&#xff1a;Win11Debloat专业指南 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改以简化和改善…...