【学习笔记】Day 22

news2024/11/15 4:09:53

一、进度概述

        1、机器学习常识23-24,以及相关代码复现
        2、python 补完计划(详见 python 专题)

二、详情

23、U-Net

        从宏观结构上来讲(以下摘自常识23):

 U-Net 就是 U 形状的网络, 前半部分 (左边) 进行编码, 后半部分 (右边) 进行解码.

  • 编码部分, 将一个图像经过特征提取, 变成一个向量. 前面说过: 深度学习本质上只做件事情, 就是特征提取.
  • 解码部分, 将压缩表示解压, 又变成矩阵.
  • 从思想上, 压缩与解压, 这与矩阵分解有几分类似, 都是把数据进行某种形式的压缩表示. 把图片压缩成向量 (而不是两个子矩阵), 想想都可怕.

        在之前的学习中,我们其实已经对机器学习中的一些基本操作(如采样,卷积,池化)有了一定了解。这个时候再来看 U-Net,就显得有迹可循了。
        关于 U-Net 的细致讲解,这个博客写的十分好:从零开始的U-net入门_u net-CSDN博客
        同时,在文末给出的项目,自己过一遍还是挺有意义的。        
        此外,这里还给出两个代码实例,跑出来也是很不错的:
        医学图像分割模型:U-Net详解及实战_u-net模型-CSDN博客
        U-Net详解-CSDN博客

        对于 U-Net 的结构理解,个人理解如下:

        从最左边开始,输入的是一张572×572×1的图片,然后经过64个3×3的卷积核进行卷积,再通过ReLU函数后得到64个570×570×1的特征通道。然后把这570×570×64的结果再经过64个3×3的卷积核进行卷积,同样通过ReLU函数后得到64个568×568×1的特征提取结果,这就是第一层的处理结果。

        第一层的处理结果是568×568×64的特征图片,通过2×2的池化核,对图片下采样为原来大小的一半:284×284×64,然后通过128个卷积核进一步提取图片特征。后面的下采样过程也是以此类推,每一层都会经过两次卷积来提取图像特征;每下采样一层,都会把图片减小一半,卷积核数目增加一倍。最终下采样部分的结果是28×28×1024,也就是一共有1024个特征层,每一层的特征大小为28×28。

        右边部分从下往上则是4次上采样过程。从最右下角开始,把28×28×1024的特征矩阵经过512个2×2的卷积核进行反卷积,把矩阵扩大为56×56×512(注意不是1024个卷积核,结果仅仅是右半边蓝色部分的512个特征通道,不包含左边白色的),由于反卷积只能扩大图片而不能还原图片,为了减少数据丢失,采取把左边降采样时的图片裁剪成相同大小后直接拼过来的方法增加特征层(这里才是左半边白色部分的512个特征通道),再进行卷积来提取特征。由于每一次valid卷积都会使得结果变小一圈,因此每次拼接之前都需要先把左边下采样过程中的图片进行裁剪。矩阵进行拼接后,整个新的特征矩阵就变成56×56×1024,然后经过512个卷积核,进行两次卷积后得到52×52×512的特征矩阵,再一次进行上采样,重复上述过程。每一层都会进行两次卷积来提取特征,每上采样一层,都会把图片扩大一倍,卷积核数目减少一半。最后上采样的结果是388×388×64,也就是一共有64个特征层,每一层的特征大小为388×388。

        在最后一步中,选择了2个1×1的卷积核把64个特征通道变成2个,也就是最后的388×388×2,其实这里就是一个二分类的操作,把图片分成背景和目标两个类别。

        从整体上来讲,U-Net 的下采样过程,就是一个模糊化过程,信息越来越精华,越来越不像原图;而上采样,则是闭上眼睛脑补(通过下采样给出的特征,反向脑补原图);同时,为了防止只由 “浓缩精华” 特征去做任务导致绝对信息丢失,便引入了中间的灰色箭头,即通过直接拼接的方法来增加特征层。

        如果原始图片是多个通道(如 RGB,对应 3 通道),那么中间层和输出层也就变为对应的多通道。

        U-Net 可以应用于很多任务:

  • 自编码器. 直接将输入数据作为标签, 看编码导致的损失 (更像矩阵分解了).
  • 从一种风格转换为另一种风格. 如将自然照片转换成卡通风格, 将地震数据转换成速度模型 (2010年如果你这么做会被业内人士笑话的).
  • 图像分割, 或提取图片的边缘. 嗯, 这个和转成卡通风格也差不多.
  • 机器翻译. 把句子编码成机器内部的表示 (一种新的世界语言?), 然后转成其它语言的句子.
  • 输入一个头, 输出多个头, 就可以做多任务. 如在速度模型反演的同时, 进行边缘提取, 这样导致反演的结果更丝滑.

24、自注意力机制

        以下列举一些讲的十分好的博客:
        知识讲解:
                自注意力机制(Self-Attention)-CSDN博客
                一文搞定自注意力机制(Self-Attention)-CSDN博客
                Transformer:注意力机制(attention)和自注意力机制(self-attention)的学习总结_注意力机制和自注意力机制-CSDN博客
                【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解-CSDN博客
                Attention 机制超详细讲解(附代码) - 知乎 (zhihu.com)                

        实战参考:
                PyTorch——实现自注意力机制(self-attention)_pytorch self attention-CSDN博客

        自注意力机制的启示,在常识中给了一个十分妙的例子:

        研表究明, 汉字的序顺并不定一能影阅响读, 比如当你看完这句话后, 才发这现里的字全都是乱的.
        从这个例子表明, 人类在阅读句子的时候, 并不是逐个字地阅读, 而是扫描一遍, 抓住重点. 换言之, 做机器翻译时, RNN, LSTM 重点考虑单词的前后关系, 这并不一定是必要的.

        再来从机器学习的角度看看自注意力机制引入的目的,细细品味,其中还是有相似之处的:

        神经网络接收的输入是很多大小不一的向量,并且不同向量向量之间有一定的关系,但是实际训练的时候无法充分发挥这些输入之间的关系而导致模型训练结果效果极差。比如机器翻译问题(序列到序列的问题,机器自己决定多少个标签),词性标注问题(一个向量对应一个标签),语义分析问题(多个向量对应一个标签)等文字处理问题。

        针对全连接神经网络对于多个相关的输入无法建立起相关性的这个问题,通过自注意力机制来解决,自注意力机制实际上是想让机器注意到整个输入中不同部分之间的相关性

         更细节的原理及代码,参考上面给出的博客,讲的都十分清晰明了,各个互补起来能够形成一个比较不错的认识。


后记

        机器学习过了一遍很粗的学习,后续呢准备在实战中逐渐完善知识体系的构筑。
        需要注意的是,现阶段还需要对 python 再过一遍,有点久没用了。
        同时,在过完这一遍机器学习后,需要对 inversionnet 再做一遍整理分析,尽可能搞懂其中原理上的分析。

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

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

相关文章

[Android studio]无法联网

问题情景: 我的Android studio 更新软件到 Android Studio Koala | 2024.1.1 Patch 1 这个版本后,当前的项目无法正常编译。 因为之前有次更新版本后,我也遇到这个无法编译的问题,后面给解决掉了。想着这次应该也没有事情。 可这…

【通信协议】SPI总线

目录 SPI简介 硬件电路 SPI模式 软件模拟初始化 时序基本单元 起始条件 终止条件 发送与接收 SPI基本单元代码 MySPI.h MySPI.c SPI简介 SPI(Serial Peripheral Interface),即串行外围设备接口,是由Motorola公司开…

在 FPGA 上实现以太网的“低级”指南

如今,我们日常的网络连接大多是通过无线方式进行的,因此很容易忘记以太网。但它仍然是一种有用的标准,是一个可靠的高吞吐量网络链接的好方法。为此,[Robert Feranec] 和 [Stacy Rieck] 编写了一个关于如何在 FPGA 上使用以太网的…

uniapp实现苹果账号登录

appleLogin(){uni.showToast({title: 正在进行苹果账户登录...,icon: none})uni.login({provider: apple,success: (loginRes) > {uni.getUserInfo({provider: apple,success: async(userInfoRes) > {console.log(用户信息, userInfoRes)// userInfoRes.userInfo.identit…

Python和MATLAB和R对比敏感度函数导图

🎯要点 深度学习网络两种选择的强制选择对比度检测贝叶斯自适应估计对比敏感度函数空间观察对比目标量化视觉皮质感知差异亮度、红/绿值、蓝/黄值色彩空间改变OpenCV图像对比度对比敏感度函数模型空间对比敏感度估计眼球运动医学研究空间时间颜色偏心率对比敏感度函…

技术债务已接管经济

“技术债务”一词通常指软件开发过程中的捷径或次优方法。它表现为设计不良的代码、缺乏文档和过时的组件。虽然正确编写的代码和文档是永恒的,但组件和方法却不是。随着时间的推移,软件及其组件可能会成为技术债务。自 40 年前的 20 世纪 80 年代软件行…

Qt使用usbcan通信

一.usbcan环境搭建 可以参照我的这篇博客&#xff1a;USBCAN-II/II使用方法以及qt操作介绍 二.项目效果展示 三.项目代码 这部分代码仅仅展示了部分功能&#xff0c;仅供参考。 #include"ControlCAN.h" #include<QDebug> #include <windows.h> #incl…

位运算,CF 878A - Short Program

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 878A - Short Program 二、解题报告 1、思路分析 顺序处理每个操作&…

数据结构(双向链表)代码详细注释

双向链表 1》双向链表的定义 双向链表也叫双链表&#xff0c;与单向链表不同的是&#xff0c;每一个节点有三个区域组成&#xff1a;两个指针域&#xff0c;一个数据域。 前指针域&#xff1a;存储前驱节点的内存地址 后指针域&#xff1a;存储后继节点的内存地址 数据域&…

Oracle归档日志满了,导致程序打不开,如何解决。

加油&#xff0c;新时代打工人&#xff01; 归档日志错误&#xff0c;登录不上&#xff0c;只能用system 角色登录&#xff0c; 错误提示 oracle 错误257 archiver error connect internal only until freed 解决cmd进入rman RMAN&#xff08;Recovery Manager&#xff09;是一…

喜报 | 麒麟信安“信创云桌面解决方案”在浙江省委党校应用实施,荣膺国家级示范案例

近日&#xff0c;国家工信部网络安全产业发展中心公布了2023年信息技术应用创新解决方案入围获奖名单&#xff0c;麒麟信安“信创云桌面解决方案”在浙江省委党校成功应用实施&#xff0c;获评国家工信部2023年信息技术应用创新解决方案党务政务领域应用示范案例。 据悉&#…

Python、R用RFM模型、机器学习对在线教育用户行为可视化分析|附数据、代码

全文链接&#xff1a;https://tecdat.cn/?p37409 分析师&#xff1a;Chunni Wu 随着互联网的不断发展&#xff0c;各领域公司都在拓展互联网获客渠道&#xff0c;为新型互联网产品吸引新鲜活跃用户&#xff0c;刺激用户提高购买力&#xff0c;从而进一步促进企业提升综合实力和…

Linux--进程管理和性能相关工具

文章目录 进程状态进程的基本状态其他更多态运行(Running或R)可中断睡眠(Interruptible Sleep 或 S)不可中断睡眠(Uninterruptible Sleep 或 D)停止(Stopped 或 T)僵尸(Zombie 或 Z) 状态转换 进程管理相关工具进程树pstreepstree -ppstree -T 进程信息psps输出属性查看进程的父…

C语言-从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存,输人的字符串以“!”结束

题目要求&#xff1a; 从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存,输人的字符串以"!”结束 1.实现程序&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() {FILE* fp fopen("…

新160个crackme - 038-Eternal Bliss.3

运行分析 需要输入注册码 PE分析 VB程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 使用VB Decompiler静态分析&#xff0c;找到关键函数入口点402AC4 ida跳转至402AC4&#xff0c;按F5反汇编&#xff0c;发现有407行代码&#xff0c;配合VB Decompiler得到的代码…

力扣面试经典算法150题:跳跃游戏 II

跳跃游戏 II 今天的题目是力扣面试经典150题中的数组的中等难度题&#xff1a;跳跃游戏II。 题目链接&#xff1a;https://leetcode.cn/problems/jump-game-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 给定一个非负整数数组 nums&#xff0…

springboot框架中filter过滤器的urlPatterns的匹配源码

如下图所示&#xff0c;我使用WebFilter注解的方式定义了一个过滤器&#xff0c;同时定义了过滤器的过滤条件 urlPatterns为/*,可能很多人都知道filter的/*代表所有URL都匹配&#xff0c;但是源码在哪里呢 先打断点看一下调用链 然后跟着调用链慢慢点&#xff0c;看看哪里开始…

redis面试(二十)读写锁WriteLock

写锁WriteLock 和读锁一样&#xff0c;在这个地方执行自己的lua脚本&#xff0c;我们去看一下 和read没有多大的区别 KEYS[1] anyLock ARGV[1] 30000 ARGV[2] UUID_01:threadId_01:write hget anyLock mode&#xff0c;此时肯定是没有的&#xff0c;因为根本没这个锁 …

LangGPT结构化提示词编写实践 #书生大模型实战营#

1.闯关任务&#xff1a; 背景问题&#xff1a;近期相关研究发现&#xff0c;LLM在对比浮点数字时表现不佳&#xff0c;经验证&#xff0c;internlm2-chat-1.8b (internlm2-chat-7b)也存在这一问题&#xff0c;例如认为13.8<13.11。 任务要求&#xff1a;利用LangGPT优化提示…

电脑如何恢复删除的照片?4种实用恢复办法

在日常生活中&#xff0c;我们经常会因为各种原因误删电脑中的照片&#xff0c;而这些照片往往承载着珍贵的回忆。那么&#xff0c;如果不小心删除了照片&#xff0c;我们该如何恢复呢&#xff1f;下面就为大家介绍几种实用的恢复方法。 一、使用回收站恢复 当我们在电脑上删…