1.有哪些关于扩散模型的公式公式长文科普分享?
2.电脑系统学习怎样学习电脑
3.Diffusion Model原理详解及源码解析
4.UGUI源码阅读之Mask
5.香农的信息论究竟牛在哪里?
有哪些关于扩散模型的长文科普分享?
扩散模型DDPM系列的最终篇章聚焦于源码解读,本文旨在通过详细的源码源码图例,带领读者深入理解DDPM模型的还原还原架构与训练方式的代码实现。对于对代码有深入了解需求的什意思读者,我们提供了两种实现方式的公式公式GitHub链接:一种基于TensorFlow,另一种基于PyTorch。源码源码源码球选择非原作GitHub进行讲解,还原还原主要是什意思考虑到在阅读源码前,了解模型架构与数学原理的公式公式前置知识显得尤为重要。
为了确保阅读体验顺畅,源码源码强烈建议在阅读本文前,还原还原先阅读以下两篇前置文章:
历史文章覆盖了大模型预训练、什意思大模型微调、公式公式文生图原理及Transformer原理等基础内容,源码源码导航链接如下:[历史文章导航链接]
在深入源码解读前,还原还原请确保对扩散模型的整体运作流程有所了解。模型运作流程分为两步:训练阶段和采样阶段。训练阶段的核心在于预测高斯分布的噪声,而采样阶段则根据数学原理推导,通过DDPM论文的实验证明,使用特定公式进行计算更为便捷。
本文重点解析DenoiseModel的代码实现,通过注释解析,清晰呈现模型训练的核心逻辑,包括每个epoch训练的两大组成部分。接下来,我们将聚焦于DDPM UNet的具体结构,从主体架构出发,深入探讨DownBlock、UpBlock、TimeEmbedding、DowSample、UpSample以及MiddleBlock等关键组件的内部实现。
UNet主体架构设计围绕着残差连接和注意力机制,通过详细的图解与代码注释,直观展现DDPM UNet的运作机制。DownBlock和UpBlock的相似结构,以及可选的注意力模块,为模型提供了灵活性与深度。TimeEmbedding组件负责生成时间向量,用于指导模型在不同时间步的预测。DowSample与UpSample模块分别负责特征的压缩与还原,简化了模型的复杂度。
MiddleBlock的实现结合了残差连接、注意力机制与额外的残差块,进一步强化了模型的学习能力。实操部分,我们提供了一个Google Colab链接,通过快速开启DDPM训练,读者可以实时观测模型的学习过程与效果。对于本地测试,可选择clone GitHub仓库的方式进行。
电脑系统学习怎样学习电脑
一 如何系统的学习电脑知识
你好:如下:学习电脑的四个阶段第一阶段:鼠标和键盘的操作鼠标的操作主要是:移动、拖动、单击、双击和右击。掌握键盘的操作可以通过打字练习来完成。第二阶段:操作系统基础知识的学习首先是Windows的学习。找一本相关的书或者相关的学习光盘系统地学习一下。并且一定要做到边学习边操作。其次,学习一些基本地DOS命令,比如:dir、、md、del等等。学习这些DOS命令时,最好把这些DOS命令的功能和相应的Windows基本操作相连系,以便加深印象。最后,我们知道WindowsXP越来越受到更多用户的青睐。之所以选择WindowsXP是因为WindowsXP在驱动程序方面的优势。如果你熟悉了Windows,那么可以说你已经掌握了WindowsXP,只要你再上机操作操作就可以了。第三阶段:学习系统工具、简单应用软件最好系统的学习一下Word。当你掌握了Word以后,那么在学习其他应用软件方面,你就有一种触类旁通的感觉。你就会发现应用软件有很多相同的地方。就拿Word和Excel来比较吧;他们的窗口结构基本相同,都是由标题栏、菜单栏、工具栏、工作区和状态栏构成;它们有很多功能相同的菜单命令和快捷工具等。在打好以上基础以后,你在学习应用软件方面就会感到得心应手了。在此推荐一些应用软件的类型:杀毒软件、解压软件、媒体播放软件、系统维护软件、文字处理软件、图象处理软件等。第四阶段:学习并能熟练掌握一些与你的工作有密切关系的软件如果你是一名教师,那么应该学会如下软件:文字处理软件[如word]、表格处理软件[如Excel]、课件制作的相关软件[如Powerpoint、Flash、Authorware]等。外卖抢单源码如果你是一名美术工作者,你可以学习图形处理、动画制作方面的软件[如:Firework、Photoshop、Flashdeng 等]。电脑的入门到精通
二 如何学习操作系统
本人学习计算机技术至今,对于如何学习操作系统原理有一点自己的看法,现在写出来,希望对大家能有所助!
操作系统怎么学,首先要想操作系统是怎么来的,在没有操作系统的年代里,人们是怎么编程的。这是首要的问
题。不知道有没有人看过INTEL官方的CPU文档,总是分为应用级编程、系统级编程、指令集这三块。其中系统级编
程这一块最复杂,我不说内容,就单从文件的大小来看,IA-编程手册的应用级编程卷是2MB,系统卷却有6MB。就
连IA-编程手册上的系统卷部分也远比应用卷的要多。当然这些内容我还没有看,不过从目录当中,觉得有很多相似
的地方,比如CPU内存寻址、虚拟存储器管理、中断与保护等等,可以从INTEL的CPU文档上看出,各种CPU或机器
虽然各有各的不同,各有各的特点,但是目前的CPU要解决的核心问题就是那么几块,要解决的就是象如何寻址内
存,如何管理虚拟存储,如何实现中断,如何保护资源等等。
各位编程的同仁想必都很清楚,计算机的操作系统就是在为应用级编程提供服务,提供什么服务,就是提供象诸
如如何内存寻址,如何管理虚拟存储器、如何进行中断,如何管理磁盘,如何。。。。等等。操作系统为我们做掉了
系统级编程中最繁重的一块,所以我们在用应用级编程比如用C++编程的时候才会那么舒服,用int分配一个变量这内
存地址就来了,某个函数要调用另一个函数执行的时候这执行行程就能跳到那个函数,内存不够了,没有关系,操作
系统自动启动虚拟存储器(只不过慢了些),所以应用级编程是最舒服的,操作系统级编程比较难,而直接做单片机
可能就是最难的了。因为即使就是操作系统级编程,可能很多有关CPU底层的东西也已经做掉了,你要做的可能就是
要了解的你的操作系统做掉了哪些功能,如何调用。而单片机就没有那么好玩了,单片机我没有做过,我想可能就是
直接对着一个CPU用汇编来编程,而且很可能是在没有操作系统的情况下,这样一来,操作系统要承担的诸如内存管
理,中断,过程跳转等这些复杂繁重的工作就得程序员自己来承担,那程序员的负担就比目前应用级编程大得多了。
我猜想,可能在没有操作系统的时候,每个计算机程序员的日子可不会象现在的那么好过,因为做每个程序,都
需要你自己去分配管理内存,你不但要考虑如何高效的管理内存,还要知道如何进行过程跳转等等这一大堆的的细
活,而这些细活在不同的CPU上的实现方式也是不同的,直到把这些问题都解决了以后,你才开始真正考虑你的应用
方面的程序逻辑如何去编的问题。当然了,虽然有关CPU底层的系统级实现细节不一样,但是大至CPU系统级这一部
分要解决哪几块问题这是一样的,所以在INTEL的官方文档上,无论是IA-还是IA-这两个编程手册的系统卷上,都
是那么几块内容。
既然系统级要解决的几个任务都是相同的,每个程序员在编程的时候都要考虑这几方面的内容,那么可能就会
想,为什么不把这些程序要解决的相同的任务给提取出来呢,这就形成了操作系统,操作系统的内核的任务,就是专
门负责解决早期计算机程序员每次编程都必须要解决的几项系统级任务,这样一来,留给应用级的担子就非常的轻
了,忘记在哪里看过,内网通源码好像以前的数据库系统是属于应用软件的,可能同样是因为每个应用软件连同操作系统都需要
一个数据库,所以就把数据库系统给单独提了出来做为系统软件了。有一点不明白为什么目前的操作系统要用文件系
统,直接用数据库系统不更好些吗,既对用户服务,又为系统服务!
我觉得,如果大家有要学操作系统原理的,根本就不必要去看所谓什么操作系统原理这一类的书,连外文的书籍
也没有必要去看,因为目前国际CPU制造商提供的CPU文档的系统级编程卷才是真正的,原汁原味最好的教材,你要
编写的操作系统从大部分任务就是解决系统卷里的任务的。有一次在QQ上和一个做单片机的家伙聊天,那人比我小
一点,我当时说目前操作系统底层好难,他就说这有什么难的,他马上就能做一个操作系统,就连编译器也能做,我
当时被吓了一大跳,小小年纪就这么厉害,现在我懂了,做单片机的,大概都会做操作系统,因为单片机的每次编程
就是和系统底层打交道的,所以做单片机程序的自然对一个操作系统内核会比较了解了。
在此建议和我一样的对操作系统原理感兴趣,对系统底层的感兴趣的人,直接去看INTEL的官方材料吧,操作系
统原理有哪几条,要解决哪些任务,通过查看不同CPU的系统卷编程手册,找出其中相同的任务和逻辑去自己总结操
作系统是如何做,无疑这种方法学到会是最多的了,而且理解起来可能会比一般的学习方法来得更深刻。
学习应用软件的朋友,我也劝你们看看操作系统,内核等这些系统底层的东西。看过了以后,你会觉得看应用级
编程会更流畅,学起来也会更简单。我就是这样学的,学MFC,后来开始学INTEL CPU的应用级编程,现在我决定开
始从系统级学起。目前我也会上MSDN英文网站看看有关MFC的东西,但我看MFC倒不是主要因为去编写MFC应用
程序,而是想看看微软是用系统为所有的应用级编程提供服务的,这整个一套结构是如何构造出来的,Oracle数据
库是我继INTEL文档的下一波目标,我也是想看看,一个数据库体系结构是什么样的,可不可以嵌到操作系统里去。
三 操作系统课程应该怎么学
1、学好先修课程,为学好操作系统课程打下基础。先修课程为C语言程序设计、数据结构、计算机组成原理等。
2、明确学习目的:该课程要求学生能够很好地掌握计算机操作系统的基本概念、各种资源管理的思想和算法,能够较好的理解操作系统原理,而且能够拓展原理的应用,也为学生的底层程序开发及后续发展奠定基础。
通过学习能掌握操作系统在硬件、其他软件和应用者之间所起的作用及其特性;掌握进程/线程的基本概念及其动态特性;掌握操作系统实行处理机管理、存储管理、文件管理;输入/输出管理、用户与操作系统接口的工作原理及其实现。
3、学以致用,用以促学:把学的东西和自己的理解,在现有的操作系统上进行尝试理解,同时通过用来反思操作系统的工作原理。
4、多想多问多讨论。通过思考,发现不足点,可以多问,然后多人讨论,深化理解。
5、可以选择linux系统作为研究对象,进行对源码的分析,对架构的分析。
四 怎样学习电脑
一、认识电脑的基本组成设备
电脑,我们也称之为微型计算机,计算机由软件和硬件两部分组成,我们用肉眼可以看到的就是硬件,对于初学者,我们需要先了解一下电脑的基本组成。
3、网线
网线,我们需要一根双向带有水晶头的网线,有路由器的,一头接路由器,桂林字牌源码一头接主机的网线插口,没有路由器,使用调制解调器(猫)拨号上网的,一头接猫的网线接口,一头接主机的网线插口。
五 什么叫系统的学习电脑
就是指,系统化学习是先确定要学习的知识领域,然后将该领域内的主要概念以及方法论了解清楚,再与其他知识概念关联起来,连接成一个结构体系。
六 怎么才能更好的学习电脑的操作系统
首先你肯定先了解一些电脑的知识,后者学电脑肯定是不能放弃的,需要坚持学习,可以去一些学电脑的地方,加油
七 如何快速系统的学习电脑硬件知识
一、处理器CPU知识
①CPU的分类
CPU品牌有两大阵营,分别是Intel(英特尔)和AMD,这两个行业老大几乎垄断了CPU市场,大家拆开电脑看看,无非也是Intel和AMD的品牌(当然不排除极极少山寨的CPU)。而Intel的CPU又分为Pentium(奔腾)、Celeron(赛扬)和Core(酷睿)。其性能由高到低也就是Core>Pentium>Celeron。AMD的CPU分为Semporn(闪龙)和Athlon(速龙),性能当然是Athlon优于Semporn的了。
Intel与AMD标志认识
②CPU的主频认识
提CPU时,经常听到2.4GHZ、3.0GHZ等的CPU,这些到底代表什么?这些类似于2.4GHZ的东东其实就是CPU的主频,也就是主时钟频率,单位就是MHZ。这时用来衡量一款CPU性能非常关键的指标之一。主频计算还有条公式。主频=外频×倍频系数。
单击“我的电脑”→“属性”就可以查看CPU类型和主频大小
我的电脑-属性查看cpu信息
③CPU提到的FSB是什么
FSB就是前端总线,简单来说,这个是CPU与外界交换数据的最主要通道。FSB的处理速度快慢也会影响到CPU的性能。4.CPU提及的高速缓存指的又是什么呢?高速缓存指内置在CPU中进行高速数据交换的储存器。分一级缓存(L1Cache)、二级缓存(L2Cache)以及三级缓存(L3Cache)。
一般情况下缓存的大小为:三级缓存>二级缓存>一级缓存。缓存大小也是衡量CPU性能的重要指标。
④常提及的 nm规格的CPU又是什么?
类似于nm这些出现在CPU的字样其实就是CPU的制造工艺,其单位是微米,为秘制越小,制造工艺当然就越先进了,频率也越高、集成的晶体管就越多!现在的CPU制造工艺从微米到纳米,从纳米---纳米---纳米---到现在的纳米---将来的纳米,再到未来的更低,工艺越小,产品做的越精,功耗低,体积越小。
⑤CPU核心电压对CPU有什么影响?
一句话:更低的核心电压,更少的耗电和发热。
利用CPU-Z软件可以详细查看CPU各参数的信息(如下图,老爷机配置):
CPU-Z软件检测出的cpu 详细信息
编辑晴空雨补充:当前cpu性能档次分布图如下:
CPU性能档次分布图
电脑软件
二:显卡知识
①有人说GPU是显卡的灵魂,为何这样说?
GPU是显卡的核心,负责大部分图形设计工作,直接决定了显卡的整体性能水平。说它是显卡灵魂,一点都不过分。现在酷睿i3等的CPU还集成了GPU,相当于cpu中集成了显卡。
②显存是衡量显卡十分重要的指标,简单介绍一下
显存对显卡性能发挥很大影响。MHZ是显存的单位。显存也分为GDR、 GDR2和GDR3,和现在的GDR5四种,将来还有更高的。显存速度单位是ns。显存位宽指显存在一个时钟周期内所能传递数据的位数,位数越大传输数据量越大。显存容量有共享内存和实际显存之分。共享显存是利用虚拟内存的容量,而虚拟内存则是使用硬盘的容量。实际显存性能大于共享显存的性能,这点很容易混淆,也是JS忽悠我们的地方。性能上目前GDR5>GDR3>GDR2>GDR,目前市场上能看到的对数的GDR3与GDR5显卡,GDR3以下级别显卡均已淘汰。
③显卡的核心频率是什么?
显卡的核心频率是指核心芯片的工作频率。显卡超频通常就是提供核心频率。
④显卡接口类型分哪些?
显卡的接口类型分AGP和PCI-Express两种。PCI-Express的速度比AGP的速度快,AGP基本已经退出历史舞台了。AGP接口的显卡目前已经停产了,要买的渠道一般就只是二手买卖,而且性能上大大如前者。
目前卖的AGP接口显卡,如在淘宝网上,价格都很便宜。但是这些其实都是代工厂生产的,质量方面肯定没有原厂生产的好,而且为了压低成本,显卡的质量难以保证,存在贴牌,偷菜游戏源码山寨等显卡。
AGP低价显卡
⑤独立显卡和集成显卡哪个好?
首先介绍下什么是独立显卡,与集成显卡,独立显卡就是单独购买的一块显卡,而集成显卡就是主板上集成了显卡,或者目前比较新的cpu上集成显卡核心。一般游戏用户与大型软件电脑配置都选独立显卡,集成显卡由于受空间等限制,性能比较差无法满足主流游戏与大型应用需求,但可以满足一般影音娱乐与简单游戏或者办公需求,速度相对来说没独立显卡的快。
独立显卡与集成显卡在于后者需要共享系统的内存作为显存,前者则单独配置显存。性能上,集成显卡无法与独立显卡相比,前者贵。集成显卡和独立显卡根本就是两个档次!
⑥ 目前显卡的芯片品牌
目前电脑显卡品牌有很多,比如 影池,七彩虹,华硕等有很多,但选用的显卡显卡核心芯片都是NVidia]和ATI显卡芯片组,芯片决定显卡档次。
其中NVidia显卡 (全球第一大显卡芯片研发和制造商)我们喜欢称为N卡, ATI显卡 (全球唯一能和NVidia显卡抗衡的显卡芯片制造商)我们简称为A卡。
下面附上目前品牌显卡都喜欢使用哪些显卡芯片组 1 微星(MSI)显卡 (全球出货量最大的显卡品牌,A N)
2 丽台(Leadtek)显卡 (全球最着名的专业绘图卡的厂商,N)
3 华硕(ASUS)显卡 (台湾板卡四大天王之一,A N)
4 蓝宝石(Sapphire)/柏能显卡 (“ATI原厂显卡”的代工厂,A )
5 迪兰恒进(Dataland)/撼迅 (ATI的三大合作伙伴之一,A)
6 技嘉(Gigabyte)显卡 (ATI的三大伙伴之一,A N )
7 七彩虹(colorful)显卡 (中国占有量最大的显卡品牌.A N )
8 鸿海/富士康(Foxconn)显卡 (为许多一线品牌代工生产显卡.A N)
9 艾尔莎(ELSA)显卡 (曾经一度是显卡业霸主 ,A N)
影驰(GALAXY)显卡 (香港品牌,以做工华丽着名,N)
----------------------------------------------------------------------------
A—代表该品牌主要使用ATI显卡芯片
N—代表该品牌主要使用NVidia显卡芯片
A N—代表该品牌ATI和NVidia显卡芯片都在使用
编辑晴空雨补充:
当前显卡性能档次分布图如下:
最新显卡性能天梯图(更新至年6月)
三:内存知识
①电脑弄个内存用来干什么的?
由于内存的速度比硬盘快,当CPU开始工作后,会将部分常用的信息写入内存,需要使用时再从内存中读取,而不是从硬盘中读取。这样读取速度明显快去硬盘的读取速度,提高了效率,因此弄个内存是必要的!
②经常看到例如DDR2 以及 DDR3 这些代表什么?
DDR2指的是2代的内存,内存分为DDR(1代)、DDR2(2代)、DDR3(3代),当然性能对比,3代性能>2代的>1代的。至于类似于DDR 这里的指的就是内存总线频率,内存总线频率决定主板前端总线频率,如DDR2 内存,主板的前端总线也只能达到MHZ的速度,DDR为内存总线频率MHZ。
③内存的数据带宽都是指什么?
简单来说是指内存的数据传输速度。有条公式是这样的,内存的数据带宽=总线频率×带宽位数÷8。举个例子,DDR内存数据带宽=(MHZ)×(Bit)÷8=6.4(GB/s)。如果开双通道的话则乘以2,也就是.8GB/s。目前使用的内存是2GB DDR,价格仅元左右,下面来看看一非常较老的DDR一代内存参数。
还是利用CPU-Z软件查看内存的详细参数(如下图,老爷机配置):
四:主板知识
①提到主板时难免要接触南 北桥芯片,这是干什么的?如何区分?
北桥芯片主要功能是控制内存。通常情况,主板上离CPU最近的芯片就是北桥芯片了。
还有个南桥芯片,很容易和北桥芯片混淆啊!南桥芯片的功能是负责I/O总线之间的通信,如键盘控制器,现在主流的主板已经不存在南桥芯片了。
②COMS电池是什么回事?
COMS电池为BIOS芯片供电,保护其存在的信息。这个COMS电池是圆形的纽扣电池,在主板上,很容易区分。其左右主要为电脑时钟和bios在断电的情况下供电,这也是为什么我们电脑把电源插头拔里,下次开机电脑的时间依然的正常的原因。
BIOS(Basic Input/outputSystem),中文全称基本输入/输出系统,这是集成在主板上的一块Rom芯片。在开机时按del键看到蓝蓝的屏幕就是这个BIOS了(绝大部分为英文界面)。当需要U盘装系统等都需要对bios进行设置才可以。
相关阅读:计算机主板CMOS界面英文翻译—轻松设置CMOS电脑主板BIOS设置详解-BIOS知识大全
③买主板有哪些品牌选择好?还有那些一线品牌、二线品牌怎么区分?
首先回答第二个问,顺便包含第一问的答案。
一线品牌:研发能力强,推出新品速度快、产品线齐全、占用高端产品制造。品牌有华硕、技嘉等。
二线品牌:实力略逊于一线品牌,但也有很好的实力。如富士康,精英、映泰等。
三线品牌:在保证稳定运行的前提下压低价格。性价比较高。如硕泰克的主板。
通路主板:大都是渠道商,没有制造能力,其他代工厂商代工,做工方便基本是三线水准。
再次使用CPU-Z查看的是主板信息(如下图,老爷机的):
以前老主板参数信息
晴空雨补充:
④主板影响整机速度吗?
严格来说,我们选主板主要注重的扩展,对速度影响不大,主板的稳定是我们选购很关注的一个方面,比如全固态电容设计的主板稳定性要比非固态电容设计的主板好的多,决定主板档次的一般是主板芯片组。
五:电脑硬盘知识
①IDE、SATA指硬盘的什么东西?
硬盘的接口类型分为IDE、SATA和SCSI,前两者用于家用电脑,后者用于服务器。IDE接口已经退出市场了,目前SATA的接口是硬盘的主流。
②目前硬盘的容量有哪些?
目前来说,硬盘主流容量都是GB、GB、1TB等。现在的硬盘也很便宜,GB的2三百快足矣,G硬盘已经慢慢退出了我们的视线,随着2T以上容量硬盘上士,1T硬盘将成为主流。
③什么是硬盘的寻道时间?
顾名思义,寻道时间就是指硬盘从电脑发生一个寻道址命令,到相应目标数据被找到所需的时间,速度越快硬盘读取数据越快。
⑤解释一下硬盘的高速缓存
所谓硬盘的高速缓存,就是在读取时,硬盘数据被存入高速缓存中,当CPU需要数据时,再将高速缓存的数据调入内存。
⑥硬盘的转速重要吗?
重要,硬盘的转速是硬盘电机的主轴转速,它是决定硬盘内部传输率快慢的重要参数之一。目前硬盘的转速主要是rpm、rpm。当然,rpm的硬盘比rpm的硬盘好,速度要快。
微微姐姐推荐,检查硬盘健康的软件HD Tune:
电脑软件
HD Tune专业硬盘信息检测工具
六:光驱知识(这个不是JS下手的主要对象,
①光驱有什么区别?
CD光驱包括CD-ROM和CD刻录机,用于CD光盘。DVD光驱包括DVD-ROM光驱和DVD刻录机光驱。
DVD光盘容量通常比CD光盘容量大!目前cd已经光驱已经逐渐被淘汰,能看到的多数是DVD或刻录机。
由于光驱一般用的也不多,主要是用作看碟或安装软年等,还有就是安装系统,不过目前光驱的作用越来越小,比如看**我们可以在网上看,软件也可以直接下载安装,装系统可以使用硬盘直接安装或使用U盘装系统等。所以这里就简单介绍到这里。
七:显示器知识
①显示器分哪几种类型?
显示器类型分两种,CRT显示器(阴极射线管)和LCD显示器(也就是液晶显示器),CRT显示器已经老掉牙了。
推荐阅读: LCD与LED液晶显示屏的区别 lcd与led哪个更好?
显示器屏例选购技巧 屏幕比例:与:9选择指南
②什么是显示器的带宽?
显示器的带宽是反映显示器的显示能力,带宽越大、显示器的响应速度越快,信号失真越少。
计算带宽的公式,带宽=水平分辨率×垂直分辨率×最大刷新率损耗系数(一般为1.5)。
③买显示器时难免要提可视角、亮度、响应时间和对比度等,这些啥来的?
可视角度:就是大家站在位于屏幕正前方的某个位置,仍能清晰看见屏幕影像时的最大角度。从最左侧能高清楚到最右侧能看清画面所形成的角度,角度越大可视角度越好。一般目前的LED显示器角度多数在度左右。
亮度:一般来说,LCD显示器亮度越高越好。
对比度:直接决定LCD显示器色彩是否丰富的参数。
响应时间:响应时间是指LCD各像素点对输入信号的反映速度,越短越好,目前比较出色的显示器响应时间在1.5ms左右。
编辑总结:显示器购买一般我们注重的就是以上参数了,实际购买不仅需要结合以上知识,同时注意检查显示屏是否有坏点等情况,还有更重要的是显示器多对比几个,看看哪些画面看着最舒服,才是最适合自己的。
八:机箱电源知识
机箱电源知识一直是大家不怎么重视的环节,也是商家利润最多环节之一,在电脑诚装机大家往往喜欢选用商家推荐的机箱电源组合,其实大家有没去仔细研究下,商界口头说给你不如w电源,其实都是最便宜的山寨电源,实际额定功率肯定不足w,成本不过左右,卖价基本是翻倍给你。不纯净的电源会为电脑各种故障埋下伏笔,以前我们也一再强调了这个问题,所以笔者推荐电源尽量购买一些有口碑的稳定性要好,功率必须能够满足整机需求。
电源的功率有三种,请注意区分,很容易被JS忽悠的一点!分别有:额定功率、最大输出功率和峰值功率。PFC分为主动式和被动式,主动式更节能。3C:通常电源都标明的,山寨冒牌除外(当然也可以伪造,其实就贴个标签),3C就是指中国强制性认证。
九:鼠标键盘知识
鼠标键盘方面其实选择主要是看,外观与手感了,一般大家喜欢用商家赠送的鼠标键盘,其实这也没什么,只要用着觉得还适应也没什么,这里就不详细介绍了。
十:音箱知识
说实话,买一个好机箱还是没什么技术含量的,那些什么杜比啊,当然音乐狂人除外,其实简单一召就够了,购买音箱如果要音质好就选个带低音炮的,还有音箱不能太轻,越重效果一般都越好,当然价格也越贵,这个看自己的需求吧。
八 新手如何开始学习做电脑系统
对于新手的话不要碰系统文件。你的好奇心一定要大,软件方面可以顺便弄,不过最好之前装个影子系统保护你的系统。在影子系统里顺便你怎么整你的电脑(对电脑没有影响,重启会还原),多上网查资料。
Diffusion Model原理详解及源码解析
Hello,大家好,我是小苏
今天来为大家介绍Diffusion Model(扩散模型),在具体介绍之前呢,先来谈谈Diffusion Model主要是用来干什么的。其实啊,它对标的是生成对抗网络(GAN),只要GAN能干的事它基本都能干。在我一番体验Diffusion Model后,它给我的感觉是非常惊艳的。我之前用GAN网络来实现一些生成任务其实效果并不是很理想,而且往往训练很不稳定。但是换成Diffusion Model后生成的则非常逼真,也明显感觉到每一轮训练的结果相比之前都更加优异,也即训练更加稳定。
说了这么多,我就是想告诉大家Diffusion Model值得一学。但是说实话,这部分的公式理解起来是有一定困难的,我想这也成为了想学这个技术的同学的拦路虎。那么本文将用通俗的语言和公式为大家介绍Diffusion Model,并且结合公式为大家梳理Diffusion Model的代码,探究其是如何通过代码实现的。如果你想弄懂这部分,请耐心读下去,相信你会有所收获。
如果你准备好了的话,就让我们开始吧!!!
Diffusion Model的整体思路如下图所示:
其主要分为正向过程和逆向过程,正向过程类似于编码,逆向过程类似于解码。
怎么样,大家现在的感觉如何?是不是知道了Diffusion Model大概是怎么样的过程了呢,但是又对里面的细节感到很迷惑,搞不懂这样是怎么还原出的。不用担心,后面我会慢慢为大家细细介绍。
这一部分为大家介绍一下Diffusion Model正向过程和逆向过程的细节,主要通过推导一些公式来表示加噪前后图像间的关系。
正向过程在整体思路部分我们已经知道了正向过程其实就是一个不断加噪的过程,于是我们考虑能不能用一些公式表示出加噪前后图像的关系呢。我想让大家先思考一下后一时刻的图像受哪些因素影响呢,更具体的说,比如[公式]由哪些量所决定呢?我想这个问题很简单,即[公式]是由[公式]和所加的噪声共同决定的,也就是说后一时刻的图像主要由两个量决定,其一是上一时刻图像,其二是所加噪声量。「这个很好理解,大家应该都能明白吧」明白了这点,我们就可以用一个公式来表示[公式]时刻和[公式]时刻两个图像的关系,如下:
[公式] ——公式1
其中,[公式]表示[公式]时刻的图像,[公式]表示[公式]时刻图像,[公式]表示添加的高斯噪声,其服从N(0,1)分布。「注:N(0,1)表示标准高斯分布,其方差为1,均值为0」目前可以看出[公式]和[公式]、[公式]都有关系,这和我们前文所述后一时刻的图像由前一时刻图像和噪声决定相符合,这时你可能要问了,那么这个公式前面的[公式]和[公式]是什么呢,其实这个表示这两个量的权重大小,它们的平方和为1。
接着我们再深入考虑,为什么设置这样的权重?这个权重的设置是我们预先设定的吗?其实呢,[公式]还和另外一个量[公式]有关,关系式如下:
[公式] ——公式2
其中,[公式]是预先给定的值,它是一个随时刻不断增大的值,论文中它的范围为[0.,0.]。既然[公式]越来越大,则[公式]越来越小,[公式]越来越小,[公式]越来越大。现在我们在来考虑公式1,[公式]的权重[公式]随着时刻增加越来越大,表明我们所加的高斯噪声越来越多,这和我们整体思路部分所述是一致的,即越往后所加的噪声越多。
现在,我们已经得到了[公式]时刻和[公式]时刻两个图像的关系,但是[公式]时刻的图像是未知的。我们需要再由[公式]时刻推导出[公式]时刻图像,然后再由[公式]时刻推导出[公式]时刻图像,依此类推,直到由[公式]时刻推导出[公式]时刻图像即可。
逆向过程是将高斯噪声还原为预期的过程。先来看看我们已知条件有什么,其实就一个[公式]时刻的高斯噪声。我们希望将[公式]时刻的高斯噪声变成[公式]时刻的图像,是很难一步到位的,因此我们思考能不能和正向过程一样,先考虑[公式]时刻图像和[公式]时刻的关系,然后一步步向前推导得出结论呢。好的,思路有了,那就先来想想如何由已知的[公式]时刻图像得到[公式]时刻图像叭。
接着,我们利用贝叶斯公式来求解。公式如下:
那么我们将利用贝叶斯公式来求[公式]时刻图像,公式如下:
[公式] ——公式8
公式8中[公式]我们可以求得,就是刚刚正向过程求的嘛。但[公式]和[公式]是未知的。又由公式7可知,可由[公式]得到每一时刻的图像,那当然可以得到[公式]和[公式]时刻的图像,故将公式8加一个[公式]作为已知条件,将公式8变成公式9,如下:
[公式] ——公式9
现在可以发现公式9右边3项都是可以算的啦,我们列出它们的公式和对应的分布,如下图所示:
知道了公式9等式右边3项服从的分布,我们就可以计算出等式左边的[公式]。大家知道怎么计算嘛,这个很简单啦,没有什么技巧,就是纯算。在附录->高斯分布性质部分我们知道了高斯分布的表达式为:[公式]。那么我们只需要求出公式9等式右边3个高斯分布表达式,然后进行乘除运算即可求得[公式]。
好了,我们上图中得到了式子[公式]其实就是[公式]的表达式了。知道了这个表达式有什么用呢,主要是求出均值和方差。首先我们应该知道对高斯分布进行乘除运算的结果仍然是高斯分布,也就是说[公式]服从高斯分布,那么他的表达式就为 [公式],我们对比两个表达式,就可以计算出[公式]和[公式],如下图所示:
现在我们有了均值[公式]和方差[公式]就可以求出[公式]了,也就是求得了[公式]时刻的图像。推导到这里不知道大家听懂了多少呢?其实你动动小手来算一算你会发现它还是很简单的。但是不知道大家有没有发现一个问题,我们刚刚求得的最终结果[公式]和[公式]中含义一个[公式],这个[公式]是什么啊,他是我们最后想要的结果,现在怎么当成已知量了呢?这一块确实有点奇怪,我们先来看看我们从哪里引入了[公式]。往上翻翻你会发现使用贝叶斯公式时我们利用了正向过程中推导的公式7来表示[公式]和[公式],但是现在看来那个地方会引入一个新的未知量[公式],该怎么办呢?这时我们考虑用公式7来反向估计[公式],即反解公式7得出[公式]的表达式,如下:
[公式] ——公式
得到[公式]的估计值,此时将公式代入到上图的[公式]中,计算后得到最后估计的 [公式],表达式如下:
[公式] ——公式
好了,现在在整理一下[公式]时刻图像的均值[公式]和方差[公式],如下图所示:
有了公式我们就可以估计出[公式]时刻的图像了,接着就可以一步步求出[公式]、[公式]、[公式]、[公式]的图像啦。
这一小节原理详解部分就为大家介绍到这里了,大家听懂了多少呢。相信你阅读了此部分后,对Diffusion Model的原理其实已经有了哥大概的解了,但是肯定还有一些疑惑的地方,不用担心,代码部分会进一步帮助大家。
代码下载及使用本次代码下载地址: Diffusion Model代码
先来说说代码的使用吧,代码其实包含两个项目,一个的ddpm.py,另一个是ddpm_condition.py。大家可以理解为ddpm.py是最简单的扩散模型,ddpm_condition.py是ddpm.py的优化。本节会以ddpm.py为大家讲解。代码使用起来非常简单,首先在ddpm.py文件中指定数据集路径,即设置dataset_path的值,然后我们就可以运行代码了。需要注意的是,如果你使用的是CPU的话,那么你可能还需要修改一下代码中的device参数,这个就很简单啦,大家自己摸索摸索就能研究明白。
这里来简单说说ddpm的意思,英文全称为Denoising Diffusion Probabilistic Model,中文译为去噪扩散概率模型。
代码流程图这里我们直接来看论文中给的流程图好了,如下:
看到这个图你大概率是懵逼的,我来稍稍为大家解释一下。首先这个图表示整个算法的流程分为了训练阶段(Training)和采样阶段(Sampling)。
我们在正向过程中加入的噪声其实都是已知的,是可以作为真实值的。而逆向过程相当于一个去噪过程,我们用一个模型来预测噪声,让正向过程每一步加入的噪声和逆向过程对应步骤预测的噪声尽可能一致,而逆向过程预测噪声的方式就是丢入模型训练,其实就是Training中的第五步。
代码解析首先,按照我们理论部分应该有一个正向过程,其最重要的就是最后得出的公式7,如下:
[公式]
那么我们在代码中看一看是如何利用这个公式7的,代码如下:
Ɛ为随机的标准高斯分布,其实也就是真实值。大家可以看出,上式的返回值sqrt_alpha_hat * x + sqrt_one_minus_alpha_hat其实就表示公式7。注:这个代码我省略了很多细节,我只把关键的代码展示给大家看,要想完全明白,还需要大家记住调试调试了
接着我们就通过一个模型预测噪声,如下:
model的结构很简单,就是一个Unet结构,然后里面嵌套了几个Transformer机制,我就不带大家跳进去慢慢看了。现在有了预测值,也有了真实值Ɛ返回后Ɛ用noise表示,就可以计算他们的损失并不断迭代了。
上述其实就是训练过程的大体结构,我省略了很多,要是大家有任何问题的话可以评论区留言讨论。现在来看看采样过程的代码吧!!!
上述代码关键的就是 x = 1 / torch.sqrt(alpha) * (x - ((1 - alpha) / (torch.sqrt(1 - alpha_hat))) * predicted_noise) + torch.sqrt(beta) * noise这个公式,其对应着代码流程图中Sampling阶段中的第4步。需要注意一下这里的跟方差[公式]这个公式给的是[公式],但其实在我们理论计算时为[公式],这里做了近似处理计算,即[公式]和[公式]都是非常小且近似0的数,故把[公式]当成1计算,这里注意一下就好。
代码小结可以看出,这一部分我所用的篇幅很少,只列出了关键的部分,很多细节需要大家自己感悟。比如代码中时刻T的用法,其实是较难理解的,代码中将其作为正余弦位置编码处理。如果你对位置编码不熟悉,可以看一下我的 这篇文章的附录部分,有详细的介绍位置编码,相信你读后会有所收获。
参考链接由浅入深了解Diffusion
附录高斯分布性质高斯分布又称正态分布,其表达式为:
[公式]
其中[公式]为均值,[公式]为方差。若随机变量服X从正态均值为[公式],方差为[公式]的高斯分布,一般记为[公式]。此外,有一点大家需要知道,如果我们知道一个随机变量服从高斯分布,且知道他们的均值和方差,那么我们就能写出该随机变量的表达式。
高斯分布还有一些非常好的性质,现举一些例子帮助大家理解。
版权声明:本文为奥比中光3D视觉开发者社区特约作者授权原创发布,未经授权不得转载,本文仅做学术分享,版权归原作者所有,若涉及侵权内容请联系删文。
3D视觉开发者社区是由奥比中光给所有开发者打造的分享与交流平台,旨在将3D视觉技术开放给开发者。平台为开发者提供3D视觉领域免费课程、奥比中光独家资源与专业技术支持。
加入 3D视觉开发者社区学习行业前沿知识,赋能开发者技能提升!加入 3D视觉AI开放平台体验AI算法能力,助力开发者视觉算法落地!
往期推荐:1、 开发者社区「运营官」招募启动啦! - 知乎 (zhihu.com)
2、 综述:基于点云的自动驾驶3D目标检测和分类方法 - 知乎 (zhihu.com)
3、 最新综述:基于深度学习方式的单目物体姿态估计与跟踪 - 知乎 (zhihu.com)
UGUI源码阅读之Mask
Mask主要基于模版测试来进行裁剪,因此先来了解一下unity中的模版测试。
Unity Shader中的模版测试配置代码大致如上
模版测试的伪代码大概如上
传统的渲染管线中,模版测试和深度测试一般发生在片元着色器(Fragment Shader)之后,但是现在又出现了Early Fragment Test,可以在片元着色器之前进行。
Mask直接继承了UIBehaviour类,同时继承了ICanvasRaycastFilter和IMaterialModifier接口。
Mask主要通过GetModifiedMaterial修改graphic的Material。大致流程:
1.获取当前Mask的层stencilDepth
2.StencilMaterial.Add修改baseMaterial的模板测试相关配置,并将其缓存
3.StencilMaterial.Add设置一个unmaskMaterial,用于最后将模板值还原
MaskableGraphic通过MaskUtilities.GetStencilDepth计算父节点的Mask层数,然后StencilMaterial.Add修改模板测试的配置。
通过Frame Debugger看看具体每个batch都做了什么。先看第一个,是Mask1的m_MaskMaterial,关注Stencil相关的数值,白色圆内的stencil buffer的值设置为1
这个是Mask2的m_MaskMaterial,根据stencil的计算公式,Ref & ReadMask=1,Comp=Equal,只有stencil buffer & ReadMask=1的像素可以通过模板测试,即第一个白色圆内的像素,然后Pass=Replace,会将通过的像素写入模板值(Ref & WriteMask=3),即两圆相交部分模板值为3
这个是RawImage的Material,只有模板值等于3的像素可以通过模板测试,所以只有两个圆相交的部分可以写入buffer,其他部分舍弃,通过或者失败都不改变模板值
这是Mask2的unmaskMaterial,将两个圆相交部分的模板值设置为1,也就是还原Mask2之前的stencil buffer
这是Mask1的unmaskMaterial,将第一个圆内的模板值设置为0,还有成最初的stencil buffer
可以看到Mask会产生比较严重的overdraw。
2.drawcall和合批
每添加一个mask,一般会增加2个drawcall(加上mask会阻断mask外和mask内的合批造成的额外drawcall),一个用于设置遮罩用的stencil buffer,一个用于还原stencil buffer。
如图,同一个Mask下放置两个使用相同的RawImage,通过Profiler可以看到两个RawImage可以进行合批
如图,两个RawImage使用相同的,它们处于不同的Mask之下,但是只要m_StencilValue相等,两个RawImage还是可以进行合批。同时可以看到Mask1和Mask1 (1),Mask2和Mask2 (1)也进行了合批,说明stencilDepth相等的Mask符合合批规则也可以进行合批。
StencilMaterial.Add会将修改后的材质球缓存在m_List中,因此调用StencilMaterial.Add在相同参数情况下将获得同一个材质球。
香农的信息论究竟牛在哪里?
“信息”被定义为一种有别于物质—能源的东西,在需要作出决策的时候,有一个选择存在于一批选择之中,在这样的情况下,信息影响不确定性。因此,信息是不确定性的减少。信息的基本单位是比特,这个词是“二进制数字”的浓缩。香农的信息测度单位——比特——的一个重要优点是:它能够为范围极其广泛的“物质—能量”所使用。比特是信息的一个普遍单位。在每一种情况下,信息量都可以被还原为比特。
香农在年的两篇论文提出了一系列以数学形式表达的定理,涉及到讯息从一个地方向另一个地方的传递。这些定理预示了信道能力的、以信息的比特来测度的因变量。香农也阐述了传播所涉及的主要因素:信源、讯息、发射器、信号、噪音、接受到的信号、接受器和信宿。克劳德·香农的整体理论贡献被普遍成为信息论,尽管香农将之称为“传播的数学理论”。
香农的传播模式:“信源”在一系列可能的讯息中选择一个称心的“讯息”——“发射器”将这个讯息改变成“信号”,后者实际上是通过“传播信道”被从发射器送到“接受器”——“接受器”是一种相反的发射器,将被发射的信号重新变成一个讯息,并将这个讯息传递到信宿——在被发射的过程中,不幸的特征:某些东西被加到了信号上面,它们在信源的意图之外——被发射的信号中的所有这些变化就被称为“噪音”。
年以后,香农的信息论在物理学、生物学和社会科学等学术团体中得到迅速而又广泛的传播。信息论被普遍引用,这种影响历时多年经久不衰。香农的(以熵的公式所测度的)信息概念对于传播学学者来说有着直接的用处。或许这就是为什么他的理论通常被称为“信息”理论、而不是“传播”理论的原因,后者是香农用来表示其理论的术语。
香农的信息概念的普遍性受到了赞扬:通过以定义清晰、但又完全抽象的术语来对待信息,而且适用于所有种类、所有领域的信息。香农信息论对目前的通信系统设计和编码都有不可忽视的指导意义。