关于深度学习:ChatGPT最全提示词Prompts总结看这一篇就够了

以下简直涵盖了各类人群想要应用ChatGPT的所有提醒词,须要的敌人能够间接复制粘贴应用。 从翻译到整顿消耗超过2个小时,如果内容对大家有帮忙,请不要悭吝你们的喜爱、点赞、关注~ 如何正确的发问? 负责守业技术律师我将要求您筹备一页纸的设计合作伙伴协定草案,该协定是一家领有 IP 的技术初创公司与该初创公司技术的潜在客户之间的协定,该客户为该初创公司正在解决的问题空间提供数据和畛域专业知识。您将写下大概 1 a4 页的拟议设计合作伙伴协定,涵盖 IP、机密性、商业权力、提供的数据、数据的应用等所有重要方面。 负责歌曲推荐人我想让你负责歌曲推荐人。我将为您提供一首歌曲,您将创立一个蕴含 10 首与给定歌曲类似的歌曲的播放列表。您将为播放列表提供播放列表名称和形容。不要抉择同名或同名歌手的歌曲。不要写任何解释或其余文字,只需回复播放列表名称、形容和歌曲。我的第一首歌是“Other Lives - Epic”。 负责编剧我要你负责编剧。您将为长篇电影或可能吸引观众的网络连续剧开发引人入胜且富裕创意的剧本。从想出乏味的角色、故事的背景、角色之间的对话等开始。一旦你的角色倒退实现——发明一个充斥波折的激动人心的故事情节,让观众始终悬念到最初。我的第一个要求是“我须要写一部以巴黎为背景的浪漫剧情电影”。 充当小说家我想让你表演一个小说家。您将想出富裕创意且引人入胜的故事,能够长期吸引读者。你能够抉择任何类型,如奇幻、浪漫、历史小说等——但你的指标是写出具备杰出情节、引人入胜的人物和意想不到的低潮的作品。我的第一个要求是“我要写一部以将来为背景的科幻小说”。 作为求职信为了提交工作申请,我想写一封新的求职信。请撰写一封阐明我的技术技能的求职信。我从事网络技术工作曾经两年了。我作为前端开发人员工作了 8 个月。我通过应用一些工具而成长。这些包含[...Tech Stack],等等。我心愿倒退我的全栈开发技能。我渴望过一种 T 型生存。你能写一封对于我本人的求职信吗? 充当启动创意生成器依据人们的志愿产生数字守业点子。例如,当我说“我心愿在我的小镇上有一个大型购物中心”时,你会为数字守业公司生成一个商业打算,其中蕴含创意名称、简短的一行、指标用户角色、要解决的用户痛点、次要价值主张、销售和营销渠道、支出流起源、老本构造、要害流动、要害资源、要害合作伙伴、想法验证步骤、预计的第一年经营老本以及要寻找的潜在业务挑战。将后果写在提价表中。 作为广告商能让你当广告商,您能够创立一个流动来推广您抉择的产品或服务。您将抉择指标受众,制订要害信息和口号,抉择宣传媒体渠道,并决定实现目标所需的任何其余流动。我的第一个倡议申请是“我须要帮忙针对 18-30 岁的年轻人制作一种新型能量饮料的广告流动。” 充当新语言创造者我要你把我写的句子翻译成一种新的假造的语言。我会写句子,你会用这种新造的语言来表白它。我只是想让你用新假造的语言来表白它。除了新假造的语言外,我不心愿你回复任何内容。当我须要用英语通知你一些事件时,我会用 {like this} 这样的大括号括起来。我的第一句话是“你好,你有什么想法?” 充当书面作品的题目生成器我想让你充当书面作品的题目生成器。我会给你提供一篇文章的主题和关键词,你会生成五个吸引眼球的题目。请放弃题目简洁,不超过 20 个字,并确保放弃意思。回复将应用主题的语言类型。我的第一个主题是“LearnData,一个建设在 VuePress 上的知识库,外面整合了我所有的笔记和文章,不便我应用和分享。” 负责产品经理请确认我的以下申请。请以产品经理的身份回复我。我会问主题,你会帮我写一个 PRD 与这些 heders:主题,介绍,问题陈说,指标和指标,用户故事,技术要求,收益,KPI,开发危险,论断。在我要求一个对于特定主题的 PRD 之前,不要写任何 PRD,性能 pr 开发。 负责数学历史老师我想让你充当数学历史老师,提供无关数学概念的历史倒退和不同数学家的奉献的信息。你应该只提供信息而不是解决数学问题。应用以下格局答复:“{数学家/概念} - {他们的奉献/倒退的简要总结}。我的第一个问题是“毕达哥拉斯对数学的奉献是什么?” 充当 Linux 终端我想让你充当 Linux 终端。我将输出命令,您将回复终端应显示的内容。我心愿您只在一个惟一的代码块内回复终端输入,而不是其余任何内容。不要写解释。除非我批示您这样做,否则不要键入命令。当我须要用英语通知你一些事件时,我会把文字放在中括号内[就像这样]。我的第一个命令是 pwd 充当英语翻译和改良者代替:语法,谷歌翻译 我想让你充当英语翻译员、拼写纠正员和改良员。我会用任何语言与你交谈,你会检测语言,翻译它并用我的文本的更正和改良版本用英语答复。我心愿你用更柔美优雅的高级英语单词和句子替换我简化的 A0 级单词和句子。放弃雷同的意思,但使它们更文艺。我要你只回复更正、改良,不要写任何解释。我的第一句话是“istanbulu cok seviyom burada olmak cok guzel” 充当前端智能思路助手代替:百度、谷歌人工搜寻 我想让你充当前端开发专家。我将提供一些对于Js、Node等前端代码问题的具体信息,而你的工作就是想出为我解决问题的策略。这可能包含倡议代码、代码逻辑思路策略。我的第一个申请是“我须要可能动静监听某个元素节点间隔以后电脑设备屏幕的左上角的X和Y轴,通过拖拽挪动地位浏览器窗口和扭转大小浏览器窗口。” 负责面试官示例:Java 后端开发工程师、React 前端开发工程师、全栈开发工程师、iOS 开发工程师、Android开发工程师等。 我想让你负责Android开发工程师面试官。我将成为候选人,您将向我询问Android开发工程师职位的面试问题。我心愿你只作为面试官答复。不要一次写出所有的问题。我心愿你只对我进行采访。问我问题,期待我的答复。不要写解释。像面试官一样一个一个问我,等我答复。我的第一句话是“面试官你好” ...

May 5, 2023 · 2 min · jiezi

关于深度学习:3D设计有哪些流程附自学教程

现在,对于 3D 软件的优劣探讨川流不息,咱们在理论我的项目中正好也有用到各个不同的 3D 软件,比方 Maya、ZBrush、C4D、Blender、Substance Painter、Marvelous Designer 之类的 3D 软件,明天分享下各个软件之间的特点及优良的学习教程。 C4D C4D 当初应该是国内设计圈里最火的 3D 软件了,因为它的上手的确非常容易,可能是因为它的操作十分合乎设计师的思维模式,图层的治理形式也跟平时用的 PS 很相似,基本上一看就懂。我本人在平时的我的项目中也是习惯从 C4D 开始根底的建模工作,在这里做的根底模型。 C4D 有十分弱小的动画性能,还有 OC 之类的弱小渲染器,轻易学一段时间就能做出十分牛逼的成果。 C4D 当初利用的场景也特地多,经营设计、UI 设计、3D 动画等等都能用到。但 C4D 也有本人的缺点,从我本人的应用教训看,它的拆 UV 性能十分鸡肋,渲染成果跟实时渲染成果差距较大,雕刻性能也比拟根底,在做一些我的项目的时候不大不便。 所以我通常还会联合其余 3D 软件一起来用。 MDMD 是 MarvelousDesigner 的缩写,这款软件次要是用来做衣服的,它的布料解算能力特地厉害,所以个别做一些服装褶皱模仿用这个软件就十分不便。个别的流程是,在 C4D 中做好模型后,导出 fbx 或 obj 的文件格式导入到 MD,而后在这里进行布料的版面设计、缝合、模仿,最初导出失去的衣服模型。这里要留神的是,因为它的布线网格是比拟错乱的,所以如果要用到实时渲染的我的项目中还须要对模型进行拓扑低模,能力方便使用。MD 的学习教程,我也举荐 2 个:1) Marvelous Designer 疾速入门教程分享。官网的入门教程,没半句废话,小姐姐的声音还特地温顺,非常适合入门学习。 2)「MD 入门基础教程」从入门到进阶,手把手教你做小裙几!这位 UP 主通过一个理论案例带你做一条简略的裙子,能帮忙你相熟整个制作流程。ZBrush个别对模型细节要求比拟高的,还会在做完中模后用它来进行雕刻,丰盛细节。ZBrush 简称 ZB,这个软件学习老本绝对更高一些,它基本上都是通过快捷键来操作的,而且从我本人的应用教训看,它的快捷键体系相当简单,基本上都是通过 control/option/command/shift 这几个键+鼠标的左右键互相组合应用,实现各种操作。说实话,我首次学习应用的时候,几乎快被快捷键搞解体了,跟以前本人应用的 3D 软件齐全不是一个套路。ZBrush 是 Pixologic 开发的一款思维独特的 3D 软件,兼有 2d 软件的繁难操作性和 3D 弱小的性能,于 2009 年正式面向 PC 和 Mac 公布。到了明天,ZBrush 被公认为是市场上最先进的 3D 雕刻软件。我记得我过后在我的项目中想用 ZB 雕刻模型细节而后烘焙法线来实现缝合线问题,因为 ZB 切实是用的不多,很多根底操作都不大会,如果从 0 开始学习,工夫周期太长,我的项目齐全等不了。所以,过后间接找了一个缝合线的进阶教程来学习。由一个进阶教程开始学习,学习的曲线果然是太过平缓,过程中是十分苦楚的。我找的这个进阶教程,作者齐全没有说他是应用了哪些快捷键达到了某个操作,我只能重复来回一直刷教程那要害的几分钟,甚至慢放,看软件界面图标的变动来判断作者的操作,比方如何疾速遮罩,如何疾速分组,如何独显,反选,如何选线,如何能力呈现重叠线等等,每一个问题都得独自再找教程学。所以为了看懂这个教程,我起码找了 10 来个基础教程做针对性的补充学习。不过,当本人最终钻研明确后,我立马就把过程全副写下来了,而后马上把本人的钻研胜利跟共事和星球中的敌人们进行了分享,既分享了教训,同时坚固本人的学习成绩。一次难题的钻研,在两天工夫就把很多 ZB 的根底性能熟练掌握了,而且还能取得很强的满足感,这就是钻研难题的高级高兴!所以,学习不肯定非得从根底的开始,从有挑战的难题开始,说不定会有更快的成长,只是过程可能会是苦楚的。Maya做完了高模后,到真正把模型落地应用还须要从新拓扑成低模。我个别是用 C4D 进行拓扑,开了 C4D 的点吸附性能,拓扑还是蛮快的,当然要留神布线的合理性。优良的布线是前面做模型绑定刷权重还有做动画和还原的根底,不然前面会遇到十分多的麻烦。Maya 是一个十分业余的 3D 软件,它的建模和动画能力十分弱小,更适宜做电影级别的影视动画等等,不适宜那种短平快的我的项目。因为它是一个电影级别的业余 3D 软件,学习老本其实也会有点高,我目前只是喜爱用它来做拆 UV 的工作。在 maya 里拆 UV 几乎比 C4D 不便太多。这里我也举荐 1 个我感觉十分棒的教程给大家:1)Maya2018 UV 拆分实例教学。我用 Maya 学会拆 UV 就是通过这个教程学习的,UP 主通过一个残缺的案例,分享了他的拆 UV 教训,教程十分干货。SPSP 是 Substance Painter 软件的缩写,也是游戏 CG 畛域罕用的画贴图软件。我个别会在拆好 UV 后在 Substance Painter 中利用高下模型烘焙法线贴图、AO 贴图,而后也会在这个软件里把贴图的其余细节画好,能够做很多十分粗疏的纹理。因为能够间接在模型上边画边看成果,用它做模型贴图是十分不便的。它的应用其实跟 PS 很相似,能够通过不同的图层叠加模式和遮罩,还有一些 SP 中的智能材质做各种本人想要的成果,甚至连程序纹理,法线贴图那些细节都能够很不便的在这个软件里制作,感兴趣的话肯定要去试试了。我也举荐几个我看过的十分棒的教程给大家:1)看一集全搞定!Substance Painter 2018 究極老手教學。这个教程短小精悍,我过后就是看完这个教程,半个小时就差不多入门了这个软件。2)SP 批改法线接缝。在理论我的项目中,用 Sp 烘焙法线是一个十分高频的操作,而烘焙法线常常会产生接缝的问题,所以也分享一个 1 分钟解决这个问题的技巧视频。Blender我个别会用 blender 来做最初的材质调整和渲染,因为它的成果跟引擎预览成果是最靠近的,比拟不便直观的看到是否出了问题。有些问题在 C4D 中能够被容许,但在 blender 中就会报错,这样能够帮你严格的管制好美术资源的规范。Blender 还有一个十分强的劣势,它是全免费开源的 3D 软件,也就是说你用它来做货色齐全是不要钱的,不必放心钱包的问题。而且 Blender 尽管软件不大,但五脏俱全,内置的性能都十分弱小,再加上它是开源的软件所以有十分多的开发者能对它进行优化,同时也有十分多的插件能够应用。最近刚公布了 3.0 版本,更加厉害了。我也举荐几个我感觉十分优质的 blender 教程给大家:1)Blender 新手入门基础教程(1-7 集)。这套教程是过后我自学的时候,疾速看完的一个根底入门教程,十分实用。2)Blender 2.80 角色绑定流程 02_权重调配。Blender 给模型做绑定和刷权重也比拟不便,我过后是看了这套教程后了解了绑定和权重的概念,也举荐你学习。3)「中文字幕」跟着 Blender 大神制作角色动画。Blender 在动画方面的能力也很弱小,这个教程属于入门到进阶版,对角色动画有趣味的同学能够试着看看,我感觉十分不错。软件只是工具,每个工具都有本人的长处和毛病,各取所长,服务好本人的设计指标才是最好的。起源:本文转载彩云译设计,仅供学习,侵删。 ...

May 5, 2023 · 1 min · jiezi

关于深度学习:Windows-10-字体模糊发虚的问题及解决方法

Windows 10字体含糊发虚! 如何解决?Windows 10是一款常见的操作系统,它领有各种各样的性能,然而有些用户发现,在应用Windows 10时,字体会变得含糊发虚,这给用户带来了很多不便。上面,咱们就来看看如何解决Windows 10字体含糊发虚的问题。 一、Windows 10字体含糊发虚的起因 1、系统资源有余:在Windows 10中,系统资源是十分无限的,特地是解决图形和字体方面的资源。如果系统资源有余,字体就会变得含糊发虚。 2、零碎不兼容或内存不足:Windows 10是一款比拟新的操作系统,它的一些性能和技术可能还不是很成熟,或者是不兼容一些老旧的硬件设施。如果你应用了一些比拟老旧的硬件设施或者是装置了一些比拟大的应用程序,就会导致内存不足,字体就会变得含糊发虚。 3、显卡驱动问题:如果你的电脑显卡驱动呈现问题,也会导致Windows 10字体含糊发虚。在这种状况下,你能够尝试更新显卡驱动,或者是尝试卸载并重新安装显卡驱动。 二、解决Windows 10字体含糊发虚的办法 1、进步系统资源:如果你的Windows 10系统资源比拟无限,那么你能够尝试通过一些技巧来进步系统资源,例如:敞开一些不必要的应用程序,限度一些应用程序的运行,以及缩小一些不必要的内存应用。 2、装置适合的驱动程序:如果你的Windows 10零碎不兼容或者是有一些硬件设施呈现问题,你能够尝试装置一些适合的驱动程序来解决问题。你能够通过Windows 10的设施管理器来检查和装置驱动程序。 3、调整分辨率:如果你的Windows 10零碎反对高分辨率,那么你能够尝试调整电脑的分辨率来解决问题。你能够尝试将电脑的分辨率调整为更高的分辨率,这样能够减少屏幕的可读性,从而改善Windows 10字体含糊发虚的问题。 4、应用兼容模式运行游戏:如果你正在运行一些比拟大的游戏,你能够尝试在Windows 10中应用兼容模式运行游戏。兼容模式能够容许你在较低的分辨率下运行游戏,这样能够缩小系统资源的应用,从而改善Windows 10字体含糊发虚的问题。 5、敞开电脑特效:如果你正在运行一些比拟老旧的应用程序,你能够尝试敞开一些电脑特效,这样能够缩小系统资源的应用,从而改善Windows 10字体含糊发虚的问题。 三、总结 以上就是解决Windows 10字体含糊发虚的几种办法,当然,如果你的Windows 10零碎呈现了其余问题,你也能够尝试通过上述办法来解决问题。心愿这些办法可能帮忙你解决Windows 10字体含糊发虚的问题。 本文由mdnice多平台公布

May 4, 2023 · 1 min · jiezi

关于深度学习:CSS让网页布局更灵活

CSS(层叠样式表)是一种用于网页设计和开发的重要工具。通过应用CSS,咱们能够轻松地对网页的布局、色彩、字体、款式等进行定制,使网页更加好看、易用、具备吸引力。本课将介绍CSS的基础知识,以及如何应用font-awesome等字体库来设计网页字体。 一、CSS基础知识 CSS(层叠样式表)是一种用于网页设计和开发的重要工具。通过应用CSS,咱们能够轻松地对网页的布局、色彩、字体、款式等进行定制,使网页更加好看、易用、具备吸引力。选择器:选择器是用来指定元素的款式属性的。 常见的选择器包含: class:用于给元素增加类名,能够管制元素的款式。ID:用于给元素增加惟一的ID,能够管制元素的唯一性。for:用于给元素增加等宽的边框,能够管制元素的边框款式。hover:用于给元素增加鼠标悬停时的款式,能够管制元素的鼠标悬停款式。focus:用于给元素增加焦点时的款式,能够管制元素的焦点款式。active:用于给元素增加激活时的款式,能够管制元素的激活款式。属性:属性是用来定义元素的款式属性的。常见的属性包含:color:用于设置元素的文字色彩。background-color:用于设置元素的背景色彩。border-color:用于设置元素的边框色彩。border-style:用于设置元素的边框款式。border-width:用于设置元素的边框宽度。padding:用于设置元素的内边距。margin:用于设置元素的外边距。font-size:用于设置元素的字体大小。font-family:用于设置元素的字体。line-height:用于设置元素的行高。text-align:用于设置元素的文本对齐形式。text-decoration:用于设置元素的文本装璜。text-shadow:用于设置元素的文本暗影。display:用于设置元素的显示方式,包含元素的显示和暗藏。值:值是用来定义元素的款式属性的。常见的值包含:none:用于勾销元素的默认款式。block:用于将元素设置为块级元素,能够管制元素的宽度和高度。inline:用于将元素设置为行内元素,能够管制元素的宽度和高度。inline-block:用于将元素设置为行内元素,并且能够管制元素的宽度和高度。table:用于将元素设置为表格元素,能够管制元素的边框、填充和字体等属性。本文由mdnice多平台公布

May 4, 2023 · 1 min · jiezi

关于深度学习:如何欣赏日文字体-Sazanami字体的设计特点及其在设计中的应用

sazanami-日文字体日文字体是指用于书写日语的字体,其格调多样,能够适应各种不同的场合和须要。其中,Sazanami是一种十分受欢迎的日文字体,以其清爽、古代的格调和易于浏览的特点而受到宽泛关注。 Sazanami的设计灵感来源于日本的传统文化和古代艺术,其设计理念是“简洁而不简略”。字体采纳了简洁的笔画和古代的设计元素,使其既可能适应古代社会的快节奏,又不失传统文化的韵味。 Sazanami的特点包含: 易于浏览:Sazanami的字体设计十分简洁,每个字母都十分清晰,易于浏览。现代感强:Sazanami的字体设计现代感强,既适宜古代社会的需要,又不失传统文化的韵味。易于设计:Sazanami的字体设计非常灵活,能够不便地利用于各种设计场合,包含广告、海报、杂志等。多语言反对:Sazanami的字体反对多种语言,包含英语、日语、中文等,不便不同地区的用户应用。Sazanami在日本和寰球范畴内都受到了宽泛的认可和欢送。其柔美的字形和易于浏览的特点使其成为许多设计师和用户的首选字体。 Sazanami的设计理念和特点也在一直地倒退和变动。随着工夫的推移,设计师和开发者一直地对其进行改良和优化,使得Sazanami在不同的场合和需要下都可能表现出色。例如,Sazanami在设计中退出了更多的圆角和曲线元素,使其更加好看和易于浏览。此外,Sazanami还推出了一些新的字体设计,如新罗马字体和矢量字体,进一步丰盛了其字体库。 总之,Sazanami是一种十分优良的日文字体,其设计灵感来源于日本的传统文化和古代艺术,易于浏览、现代感强、易于设计和多语言反对等特点使其成为了宽泛认可和欢送的字体之一。 本文由mdnice多平台公布

May 4, 2023 · 1 min · jiezi

关于深度学习:Android中Paint字体的灵活使用

在Android开发中,Paint是一个十分重要的绘图工具,能够用于在控制台应用程序或Java GUI应用程序中绘制各种形态和图案。其中,Paint.setText()办法是用于设置Paint绘制的文本内容的。在Android开发中,如果你想要设置文本内容,那么你必须理解如何应用Paint绘制文本,否则你的应用程序可能会呈现各种问题。 在Android中,Paint绘制的文本能够是任何文本,包含字符串、数字、字母、符号等。Paint绘制的文本能够是在图片上,也能够是在图片之外的其余地位。在Paint绘制文本之前,你须要筹备好要绘制的图片,并将其转换为一个Bitmap对象。接下来,你须要设置Paint的属性,例如字体、字号、色彩等,以便绘制出你想要的文本。 上面是一个简略的示例,演示如何在Android中应用Paint绘制文本: 1.筹备好要绘制的图片:筹备一个彩色背景,画布的大小须要设置好,筹备一些小圆点,作为文本内容。 2.将图片转换为Bitmap对象:将筹备好的图片转换为一个Bitmap对象,能够应用BitmapFactory类的decodeResource()办法来实现。 3.设置Paint属性:设置Paint的属性,例如字体、字号、色彩等,以便绘制出你想要的文本。例如,设置字体为Arial,字号为36,色彩为红色。 4.绘制文本:应用Paint绘制文本,能够应用Paint.drawText()办法。在这个办法中,你须要传入一个参数,即要绘制的文本。在这个示例中,咱们将绘制一个字符串“Hello, World!”。 5.显示后果:最初,在控制台或者布局文件中显示后果,能够应用控制台的println()或者view.findViewById()等办法。 应用Paint绘制文本能够大大提高开发效率,让你更快更不便地实现各种简单的文本成果。当然,在理论开发中,你可能须要更多的文本属性和性能,例如文本旋转、文本缩放、文本突变等。这些性能能够应用Android提供的TextPaint类来实现。 在应用TextPaint类绘制文本之前,你须要筹备好要绘制的文本,并将其转换为一个String对象。接下来,你须要设置TextPaint的属性,例如字体、字号、色彩等,以便绘制出你想要的文本。例如,设置字体为Arial,字号为36,色彩为红色。 接下来,你能够应用TextPaint类的drawString()办法来绘制文本。在这个办法中,你须要传入一个参数,即要绘制的文本。在这个示例中,咱们将绘制一个字符串“Hello, World!”。 最初,你须要将结果显示在控制台或者布局文件中,能够应用控制台的println()或者view.findViewById()等办法。 总之,应用Paint绘制文本是一个十分重要的绘图工具,能够让你在Android开发中更加高效地实现各种文本成果。如果你想要更加灵便地应用Paint绘制文本,能够应用Android提供的TextPaint类。 本文由mdnice多平台公布

May 4, 2023 · 1 min · jiezi

关于深度学习:PDF-字体和图片抽取从文本中提取信息的新方法

随着信息技术的飞速发展,咱们曾经进入了数字化时代。在数字化时代,咱们能够通过各种模式的电子文档来传播信息。PDF文件作为一种常见的电子文档格局,因其便捷的操作、高度的可定制性和宽泛的利用而备受青眼。然而,PDF文件的一个次要毛病是它的可读性较差,这使得一些有价值的信息难以被人们轻松地从PDF文件中提取进去。 为了解决这个问题,一些工具和技术被开发进去,用于从PDF文件中提取字体和图片信息。本文将介绍一些风行的PDF字体和图片抽取工具,并探讨它们的优缺点。 一、PDF字体提取工具 1.Adobe Acrobat Pro: Adobe Acrobat Pro是一款业余的PDF编辑工具,但也提供了一些PDF字体提取工具。应用该工具,用户能够抉择一个PDF文件并提取其中的字体。该工具反对多种字体格局,包含TrueType、OpenType和Type 1等。 2.PDFMiner: PDFMiner是一款弱小的PDF工具,能够从PDF文件中提取文本、图像和其余信息。该工具反对多种字体格局,包含TrueType、OpenType和Type 1等。此外,PDFMiner还能够将提取的字体和图片保留为文本格式。 3.PyPDF2: PyPDF2是一款Python库,可用于从PDF文件中提取字体和图片信息。该库反对多种字体格局,包含TrueType、OpenType和Type 1等。PyPDF2还提供了一些高级性能,例如字符识别、拼写检查和文本提取等。 4.TextBlob: TextBlob是一款开源的PDF解决工具,可用于从PDF文件中提取文本信息。该工具反对多种字体格局,包含TrueType、OpenType和Type 1等。此外,TextBlob还提供了一些高级性能,例如字符识别、拼写检查和文本提取等。 二、PDF图片提取工具 1.Adobe Acrobat DC: Adobe Acrobat DC是一款风行的PDF编辑工具,提供了一些PDF图片提取工具。应用该工具,用户能够抉择一个PDF文件并提取其中的图片。该工具反对多种图片格式,包含JPEG、PNG和GIF等。 2.PDFTk: PDFTk是一款跨平台的PDF解决工具,提供了一些PDF图片提取工具。应用该工具,用户能够抉择一个PDF文件并提取其中的图片。该工具反对多种图片格式,包含JPEG、PNG和GIF等。此外,PDFTk还提供了一些高级性能,例如图片压缩、图片修复和图片转换等。 3.Ghostscript: Ghostscript是一款功能强大的PDF解决工具,可用于从PDF文件中提取字体和图片信息。该工具反对多种字体格局,包含TrueType、OpenType和Type 1等。此外,Ghostscript还提供了一些高级性能,例如字符识别、拼写检查和文本提取等。 本文由mdnice多平台公布

May 4, 2023 · 1 min · jiezi

关于深度学习:Android系统默认字体的另一种选择思源黑体

ndroid零碎默认字体 在Android零碎中,默认的字体是Roboto字体。Roboto字体是一种十分风行的字体,它在Android开源我的项目中被宽泛应用。 Roboto字体有着十分清晰的字形,看起来十分舒服。此外,它还有很好的可读性,这使得它在大多数应用程序中都能很好地实用。 一、Roboto字体的特点: 清晰的字形:Roboto字体有着十分清晰的字形,这使得它在浏览和书写时十分舒服。可读性强:Roboto字体具备很好的可读性,这意味着在大多数应用程序中它都能很好地实用。均衡的间距:Roboto字体在行与行之间的间距上也有很好的均衡。这意味着文本在屏幕上的布局十分平均,看起来十分参差。宽泛的可用性:Roboto字体是一种开源字体,因而它在Android开源我的项目中被宽泛应用。这使得它在各种设施和屏幕分辨率上都能很好地实用。二、在Android应用程序中应用Roboto字体的长处: 看起来业余:应用Roboto字体能够使应用程序看起来更加专业化。它的清晰字形和均衡的间距使得文本在屏幕上看起来更加清晰。进步可读性:因为Roboto字体的可读性很好,因而在浏览和书写时十分舒服,这也意味着应用程序的可用性失去了进步。缩小屏幕分辨率变动:因为Roboto字体在各种设施和屏幕分辨率上都能很好地实用,因而应用程序在适应不同屏幕大小时不会产生过大的影响。缩短设施电池寿命:一些钻研表明,应用Roboto字体能够缩短设施电池寿命。这是因为较暗的字体能够缩小屏幕亮度的需要,从而缩小了电池的耗费。尽管Roboto字体在Android应用程序中的应用有许多长处,但在某些状况下可能会导致问题。以下是一些可能会导致问题的状况: 应用程序的可读性升高:如果应用程序中的文本应用了不太一样的字体,那么可能会导致应用程序的可读性升高。应用程序的可用性升高:如果应用程序中的文本应用了Roboto字体,而设施屏幕分辨率较低,那么可能会导致应用程序的可用性升高。设施电池耗费减少:有一些钻研表明,应用Roboto字体可能会导致设施电池耗费减少。这是因为较暗的字体可能会导致屏幕亮度的需要减少,从而减少了电池的耗费。三、如何在Android应用程序中优化应用Roboto字体: 确保应用程序的可读性:在应用Roboto字体时,确保应用程序的文本应用了一样的字体。这能够使应用程序的可读性失去进步。思考设施屏幕分辨率:在应用Roboto字体时,要思考设施屏幕分辨率。如果设施屏幕分辨率较低,那么可能会导致应用程序的可用性升高。因而,在设计利用程本文由mdnice多平台公布

May 4, 2023 · 1 min · jiezi

关于深度学习:为Linux系统增加中文字体支持解决显示问题的三种方法

Linux 减少中文字体反对 在应用 Linux 操作系统的过程中,用户常常会遇到中文字体显示问题,导致一些界面上的文字不能正确显示。为了解决这个问题,咱们能够通过以下办法来减少中文字体反对。 一、装置中文字体 要装置中文字体,能够应用 XFCE、Xubuntu、Lubuntu 等 Linux 发行版自带的软件包管理器。在终端中输出以下命令: sudo apt-get updatesudo apt-get install xfce4-fonts xfce4-panel xfce4-locale-lang=zh_CN这将会装置 xfce4-fonts、xfce4-panel 和 xfce4-locale-lang 软件包,其中 xfce4-locale-lang=zh_CN 示意设置中文语言为中国。 二、配置 Font Awesome Font Awesome 是一款风行的字体图标集,反对多种语言,包含中文。要在 Linux 零碎中应用 Font Awesome,须要进行以下配置: 1、装置 Font Awesome 在终端中输出以下命令: sudo apt-get install font-awesome-xfce4这将会装置 Font Awesome 软件包。 2、将字体文件增加到 XFCE/Xubuntu/Lubuntu 桌面 在桌面的空白处右键单击,抉择“显示设置”,在搜寻框中输出“Font Awesome”,点击“关上开关”按钮将 Font Awesome 退出启动屏保列表中。如果您的桌面是多个文件夹的,能够在对应的文件夹中找到 Font Awesome 文件夹。 3、装置中文字体补丁 在 Font Awesome 的官方网站上,能够找到针对中文字体的补丁,下载并将其装置到零碎中。 4、利用中文字体补丁 装置实现后,重新启动 XFCE、Xubuntu、Lubuntu 桌面,就能够看到中文字体显示失常了。 三、装置中文字体反对包 如果上述办法依然无奈解决问题,能够思考装置中文字体反对包。要装置这些反对包,须要到相干的官方网站上下载并装置。 总之,要在 Linux 零碎中减少中文字体反对,须要进行以上四个步骤的操作。通过这些步骤,您能够解决中文字体显示问题,使您的操作系统更加欠缺。 ...

May 4, 2023 · 1 min · jiezi

关于深度学习:Beyond-Compare如何修改对比字体样式

Beyond Compare如何批改比照字体款式 Beyond Compare是一款十分弱小的文件比拟和文本编辑工具,它能够帮忙用户疾速地比拟文件、合并文件,甚至能够进行文本编辑和版本控制等操作。在Beyond Compare中,用户能够应用字体比拟工具来查找和批改文件中的字体款式。本文将为大家介绍如何应用Beyond Compare批改比照字体款式。 首先,关上Beyond Compare并导入要进行批改的文件。 抉择要进行批改的文件后,进入“文件”菜单,抉择“比拟”选项,而后抉择“字体比拟”。 在字体比拟对话框中,能够看到两个文件的字体款式信息。在左侧的“样式表”窗格中,能够看到文件中所有的字体款式。在右侧的“文本”窗格中,能够看到每个文件中被比拟的字体局部的内容。 在字体比拟对话框中,能够应用以下性能来批改字体款式: 改字体款式:选中要批改的字体款式,而后在右侧的“文本”窗格中进行批改。批改实现后,保留文件即可。删除字体款式:选中要删除的字体款式,而后勾销选中该款式,在右侧的“文本”窗格中删除该款式。替换字体款式:选中要替换的字体款式,而后在右侧的“文本”窗格中进行替换。替换实现后,保留文件即可。如果想要比照两个文件之间的字体款式,能够在左侧的“样式表”窗格中选中两个文件中的字体款式,而后在右侧的“文本”窗格中进行比拟。 在比拟过程中,能够应用以下快捷键来疾速定位和编辑字体款式: Ctrl + 高低方向键:选中上一个或下一个字体款式。Ctrl + 左右方向键:选中以后行的所有字体款式。回车键:编辑以后选中的字体款式。Shift + 回车键:选中以后行的所有字体款式,并进行编辑。在比拟实现后,能够将比拟后果保留为一个新的文件,以便进行进一步的剖析和编辑。总结: Beyond Compare提供了十分不便的字体比拟工具,能够帮忙用户疾速地查找和批改文件中的字体款式。通过批改字体款式,用户能够实现更好的文本浏览和编辑成果。在应用Beyond Compare进行字体比拟时,能够应用快捷键来疾速定位和编辑字体款式,进步工作效率。 本文由mdnice多平台公布

May 4, 2023 · 1 min · jiezi

关于深度学习:如何在Firefox中使用最小字体

对于firefox最小字体的设置 firefox最小字体的设置办法首先关上firefox浏览器,而后点击菜单栏上的“查看”按钮,或者应用快捷键“Ctrl+0”。 在弹出的菜单栏中抉择“缩放”选项,而后抉择“较小字体”。 这时,浏览器的字体将变得更小。如果您喜爱应用较大的字体,能够点击菜单栏上的“查看”按钮,抉择“中等字体”。 Firefox最小字体设置 1.设置最小字体的步骤与“较小字体”雷同。在菜单栏中抉择“查看”按钮,而后抉择“中等字体”即可。 2.设置默认字体大小 3.Firefox浏览器的默认字体大小是“小型”。要将默认字体大小设置为“较大”或“大型”,请在菜单栏中抉择“查看”按钮,而后抉择“字体大小”。 4.应用快捷键设置最小字体 5.要将默认字体大小设置为“较大”或“大型”,能够在菜单栏中抉择“查看”按钮,而后抉择“字体大小”。 6.zfirefox最小字体设置 7.关上Firefox浏览器并关上一个网页。 8.在网页的顶部,点击菜单栏上的“查看”按钮,或者应用快捷键“Ctrl+0”。 9.在弹出的菜单栏中抉择“缩放”选项,而后抉择“较小字体”。 10.点击菜单栏上的“查看”按钮,抉择“中等字体”即可。 11.在浏览器的地址栏中输入您想要搜寻的内容。 12.点击搜寻后果链接。 13.在链接的页面上,点击菜单栏上的“查看”按钮,或者应用快捷键“Ctrl+0”。 14.在弹出的菜单栏中抉择“缩放”选项,而后抉择“较小字体”。 15.点击菜单栏上的“查看”按钮,抉择“中等字体”即可。 16如果要在Firefox中最小化浏览器窗口,能够应用快捷键“Ctrl+M+O”。 17如果要复原浏览器窗口的最大大小,能够应用快捷键“Ctrl+M+L”。 18.firefox最小字体设置 19.关上Firefox浏览器并关上一个网页。 20.在网页的顶部,点击菜单栏上的“查看”按钮,或者应用快捷键“Ctrl+0” 21.在弹出的菜单栏中抉择“缩放”选项,而后抉择“较小字体”。 22.点击菜单栏上的“查看”按钮,抉择“中等字体”即可。 23.在浏览器的地址栏中输入您想要搜寻的内容。 24.点击搜寻后果链接。 25.在链接的页面上,点击菜单栏上的“查看”按钮,或者应用快捷键“Ctrl+0”。 26.在弹出的菜单栏中抉择“缩放”选项,而后抉择“较小字体”。 点击菜单栏上的“查看”按钮,抉择“中等字体”即可。 27.firefox最小字体设置 28.关上Firefox浏览器并关上一个网页。 29.在网页的顶部,点击菜单栏上的“查看”按钮,或者应用快捷键 本文由mdnice多平台公布

May 4, 2023 · 1 min · jiezi

关于深度学习:VLAD-Diffusion一个更好用且易于安装的Stable-Diffusion-Web-UI

VLAD Diffusion 是咱们后面介绍过的 AUTOMATIC1111/stable-diffusion-webui的一个定制的更新,它次要是为了更频繁公布的更新和谬误修复。它蕴含 新的安装程序,并且提供了高级CUDA调优不在依赖Accelerate,因为Accelerate是分布式的,并且将库更新为最新的已知兼容版本内置了 LoRA, LyCORIS, Custom Diffusion, Dreambooth 的训练大多数设置可通过UI配置,而不须要命令行新的谬误日志和异样解决并且做了以下优化 针对Torch 2.0优化如果零碎反对运行时会默认启用SDP内存注意力(xFormers 和其余穿插注意力模式也还是可用)在CPU或CUDA上运行时主动调整参数:反对AMD和M1平台(但没有优化)还能够换web的主题(这个真须要吗)从python 3.7降级到了3.9(3.9+都能够反对,这样有很多包就不必编译了,因为3.7有点老了,很多库是不反对的)咱们当初看看怎么装置: 这里以Python 3.10为例,并且还是须要筹备Git。 第一步,下载代码: git clone https://github.com/vladmandic/automatic实现应该在“automatic”文件夹中看到这33个文件。 第二步:双击“webui.bat”文件。这里就不须要向上次的AUTOMATIC1111版本须要咱们再进行配置了,如果你用conda环境都会主动进行: 第三步:在浏览器中关上 http://127.0.0.1:7860 输出一个prompt An astronaut riding a horse in space. Photorealistic 尽管Automatic1111还是目前的支流,然而VLAD diffusion这样的工具正在做更多的改良。 VLAD不仅解决了最近Automatic1111开发速度慢的问题,还提供了一系列加强性能,能够将您的AI图像生成我的项目晋升到新的高度。 最次要的是他用的python 3.9+ 不会有太多的本地编译的问题,所以如果你Automatic1111的包装置不上,能够试试这个代码,会简化你的装置过程。 最初代码地址: https://avoid.overfit.cn/post/0caaa9f5c8af48619361a15308a6e146 作者:Jim Clyde Monge

May 4, 2023 · 1 min · jiezi

关于深度学习:从零开始实现VAE和CVAE

扩散模型能够看作是一个档次很深的VAE(变分自编码器),前向(forward,或者译为正向)的过程,通过在多个尺度上增加噪声来逐渐扰乱数据分布;而后是反向的过程,去学习如何复原数据结构,上述的毁坏和复原过程别离对应于VAE中的编码和解码过程。所以VAE是一个重要的概念须要把握,本文将用python从头开始实现VAE和CVAE,来减少对于它们的了解。 什么是自编码器?它们的作用是什么自编码器是一种由编码器和解码器两局部组成的神经系统构造。解码器在编码器之后,两头是所谓的暗藏层,它有各种各样的名称,有时能够称为瓶颈层、潜在空间、暗藏层、编码层或编码层。它看起来像这样: 自编码器能够利用在各种用处上。最常见的就是数据压缩:当输出信号通过编码器局部时,图像的潜在示意在尺寸上要小得多。例如,在上图中,尽管输出信号用8个值示意,但其压缩示意只须要3个值。 自编码器也能够用于各种其余目标:数据去噪,特色学习,异样检测,以及当初大火的稳固扩散模型。 自编码器的实现咱们将应用MNIST数据集。要将MNIST下载到本地文件夹,请运行以下命令: # Download the files url = "http://yann.lecun.com/exdb/mnist/" filenames = ['train-images-idx3-ubyte.gz', 'train-labels-idx1-ubyte.gz', 't10k-images-idx3-ubyte.gz', 't10k-labels-idx1-ubyte.gz'] data = [] for filename in filenames: print("Downloading", filename) request.urlretrieve(url + filename, filename) with gzip.open(filename, 'rb') as f: if 'labels' in filename: # Load the labels as a one-dimensional array of integers data.append(np.frombuffer(f.read(), np.uint8, offset=8)) else: # Load the images as a two-dimensional array of pixels data.append(np.frombuffer(f.read(), np.uint8, offset=16).reshape(-1,28*28)) # Split into training and testing sets X_train, y_train, X_test, y_test = data # Normalize the pixel values X_train = X_train.astype(np.float32) / 255.0 X_test = X_test.astype(np.float32) / 255.0 # Convert labels to integers y_train = y_train.astype(np.int64) y_test = y_test.astype(np.int64)当初咱们有了训练和测试集,首先让咱们看看图像: ...

April 28, 2023 · 6 min · jiezi

关于深度学习:ChatGPT的提示的一些高级知识

作为一个大型语言模型(LLM)接口,ChatGPT有令人印象粗浅的后劲,然而真正是否用好取决与咱们的提醒(Prompt ),一个好的提醒能够让ChatGPT降职到一个更好的档次。 在这篇文章中,咱们将介绍对于提醒的一些高级常识。无论是将ChatGPT用于客户服务、内容创立,还是仅仅为了好玩,本文都将为你提供应用ChatGPT优化提醒的常识和技巧。 背景常识LLM架构常识是一个好的提醒的先决条件,因为它提供了对语言模型的底层构造和性能的根本了解,这对于创立无效的提醒是至关重要的。 让不置可否的问题变得清晰,并确定能够跨场景转换的外围准则很重要,所以咱们须要分明地定义手头的工作,并提出能够轻松适应不同上下文的提醒。精心设计的提醒是用来将工作传播给语言模型并领导其输入的工具。 所以对语言模型有简略的理解,并且分明的理解本人的指标,再加上畛域内的一些常识,是用于训练和改良语言模型的性能的要害。 提醒和返回是越多越好吗?并不是 简短且资源密集的提醒,这可能不具备老本效益,并且还记得chatgpt有字数限度吗,压缩提醒申请和返回后果是一个十分新兴的畛域,咱们要学会精简问题。并且有时候chatgpt也会回复一些很长且毫无新意的话语,所以咱们也要为它减少限定。 1、缩小回复长度 为了缩小ChatGPT回复的长度,在提示符中蕴含长度或字符限度。应用更通用的办法,您能够在提示符前面增加以下内容: Respond as succinctly as possible.阐明,因为ChatGPT是英文语言模型,所以前面介绍的提醒都以英文为例。 另外一些简化后果的提醒: 不须要举例:No examples provided 举一个例子:One example provided 等等 思考形式ChatGPT生成文本的最佳办法取决于咱们心愿LLM执行的特定工作。如果不确定应用哪种办法,能够尝试不同的办法,看看哪种办法最适宜。咱们将总结5中思考形式: 1、思维链 (Chain-of-Thought) 思维链办法波及为 ChatGPT 提供一些可用于解决特定问题的两头推理步骤示例。 2、自我发问 该办法波及模型在答复初始问题之前明确地问本人(而后答复)后续问题。 3、分步思考 分步办法能够向ChatGPT 增加以下的提醒 Let’s think step by step.这种技术已被证实能够进步 LLM 在各种推理工作上的体现,包含算术、常识和符号推理。 这个听起来就很玄学对吧,其实OpenAI是通过人类反馈强化学习 (Reinforcement Learning with Human Feedback) 的办法训练了他们的 GPT 模型,也就是说人工的反馈在训练中起了很重要的作用,所以ChatGPT 的底层模型与类人的逐渐思考办法保持一致的。 4、ReAct ReAct (Reason + Act)办法包含联合推理跟踪和特定于工作的动作。 推理跟踪帮忙模型布局和解决异样,而动作容许它从内部起源(如知识库或环境)收集信息。 5、Reflection 在ReAct模式的根底上,Reflection办法通过增加动态内存和自反射性能来加强LLM——能够推理和特定于工作的操作抉择能力。 为了实现齐全自动化,Reflection论文的作者引入了一种简略但无效的启发式办法,容许代理辨认幻像(hallucinations),避免反复动作,并在某些状况下创立环境的外部记忆图。 反模式三星必定对这个十分理解,因为交了不少学费吧,哈 ...

April 27, 2023 · 1 min · jiezi

关于深度学习:合合信息新推出反光消除技术助力手写文字识别更精准

近期,合合信息旗下扫描全能王推出液晶手写板(简称“手写板”),为用户带来仿真、晦涩的书写绘画体验,一起公布的还有扫描全能王APP的新性能“拍手写板”。该性能可帮忙用户在拍摄手写板内容后去除图片上的反光烦扰,造成更贴近白纸、板报的图片,并通过手写字迹辨认,快捷、有序地获取可编辑、可分享的电子文档,助力工作效率晋升。家庭场景中,父母可应用该性能清晰地扫描、分享孩子的画作,记录其成长轨迹。   据悉,“反光打消”技术是“拍手写板”性能的外围亮点。此前,人们打消图像反光须要应用业余的电脑端图像处理软件,进行图层复制、前景色填充、反光区域涂抹等系列简单操作。“拍手写板”性能让用户间接通过挪动设施操作,一键去除反光,助力无纸化生存、学习、办公记录,进入扫描全能王“工具箱”模块即可体验。   保留手写质感,AI助力“无伤”去反光  随着手机、相机等数码产品的遍及,数字图像成为人们生存中重要的信息载体之一,反光则是数字图像中常见的烦扰因素。比方,高校学生想通过拍照来记录老师写在黑板上的知识点,却发现画面总是被几道反光“切割”,导致有些知识点看不清,非常宜人。“拍手写板”中的“板报”模式能够残缺还原黑板上的粉笔书写成果,好看又清晰。  反光打消重点须要解决反光定位、打消,以及打消后的图像品质保留等问题。具体实际中,机器须要从黑板、手写板上精准检测、定位到反光区域,并引入人工智能技术对反光区域进行解决,以打消或削弱反光景象。  合合信息是一家人工智能及大数据科技公司,在智能文字辨认、智能图像处理技术研发利用上有着十余年深耕教训。公司技术人员提到,反光通常会不同水平地盖住一些画面上的信息,所以处理过程中须要尽量保留图像的原始细节,防止因打消反光导致图像品质降落。扫描全能王“拍手写板”性能采纳了公司独创的智能图像处理技术,可在去除画面上反光、指印痕迹的同时,尽可能还原笔锋、笔触等贴近实在的书写细节。  反光打消为手写辨认打扫阻碍  古代社会中,人们通常会抉择间接在电子设备上输入文字,传递或存储信息,但在许多场景中,手写仍然是重要的表达方式,例如开会讨论时迅速产出“脑图”、记录待办事件,或者在“头脑风暴”时,通过写字涂鸦打草稿的形式达到沉迷思考的成果。  近年来,手写文字自动识别也成为计算机视觉畛域钻研的热点。通过手写辨认技术,公众在满足书写需要的同时,也能对相干内容进行电子化存储,解决了纸质文件保留难的问题。  值得关注的是,在手写辨认场景中,反光会导致局部区域的文字无奈被精确辨认,给后续的文字辨认和了解工作带来了很大的挑战。合合信息反光打消技术可能依据手写板笔迹的格调进行特征提取,并对手写文字进行特色编码,助力文档图像中反光区域文字的提取。相干技术人员示意,除了文档图像处理外,反光打消技术在业余摄影、视频解决等畛域也具备广大的利用空间,无望为科研记录、察看提供弱小的撑持。       

April 26, 2023 · 1 min · jiezi

关于深度学习:阿里云机器学习PAI发布基于HLO的全自动分布式系统-TePDist并宣布开源

作者:品曲,宗雁,佀畅,侠雕,伟林 导读始终以来,大模型在模型成果上被证实具备显著劣势。而ChatGPT的呈现,证实了其在工业生产工具方面具备微小后劲。毫无疑问,大模型的训练须要微小的算力,这对分布式并行框架是一项考验。现如今,业界越来越多的团队纷纷转向分布式框架的钻研与开发之中,既有针对特定场景特定模型的极致手工优化,也包含面向通用模型通用场景的主动分布式工作。然而,它们在理论生产场景依然有一些挑战。一方面,对于手工优化的框架,尽管其特定状况下的性能较为极致,但通用性存在限度。另一方面,现有的主动分布式框架可能在通用性和性能方面体现较好,但通常须要忍耐较长的策略搜寻工夫,进而对业务落地产生肯定的影响。为了应答以上问题,PAI 团队推出并开源了TePDist(Tensor Program Distributed System),它通过在HLO上做分布式策略搜寻,实现与用户模型语言解耦。并且在放弃通用性的同时,在可承受的策略搜寻工夫内,谋求高性能分布式策略。 TePDist背地的技术框架如何设计?将来有哪些布局?明天一起来深刻理解。 TePDist是什么?TePDist是阿里云PAI团队自研的基于HLO IR层的全自动分布式深度学习零碎,它不仅仅是一个分布式Compiler,还领有本人的分布式Runtime,无效地解决了深度学习模型并行策略的主动搜寻与分布式策略施行问题。 在架构方面,TePDist采纳Client/Server模式,实现分布式策略与模型形容的解耦。Server端是TePDist最重要局部,它以HLO IR作为输出,主动摸索并施行分布式并行策略;Client端以用户形容的模型为输出,将其转换成HLO IR。因而,任何具备转换HLO IR能力的Client,都可通过适配后接入Server端。 在性能方面,TePDist分为两个局部。一是在HLO IR上进行SPMD(Data Parallel和Sharding)和Pipeline并行的策略搜寻。并以此构建编译基于Task Graph的执行打算。二是高效运行执行打算的分布式执行引擎。 在应用方面,TePDist提供了不同优化级别,高优化级别更加谋求分布式策略品质,低优化级别会额定采取一些Heuristic,以较为渺小策略品质就义,换取更快地搜寻工夫,以此满足落地需要。 我的项目开源地址:https://github.com/alibaba/TePDist TePDist的次要个性如下: 一套残缺的零碎:采纳Client/Server模式。Client能够是任何可能生成XLA HLO的前端。Server负责进行分布式策略布局,以及主动分布式工作拉起。Client与Server解耦的动机是冀望未来更不便地对接不同的前端框架。以HLO IR作为Server端输出:HLO的粒度刚刚好,目前看到的超大模型基本上有上万条HLO指令。在HLO这个层级做分布式策略布局,能够防止依赖灵便多变的模型高层次形象,以不变应万变。全自动摸索分布式策略:TePDist反对在没有任何annotation的状况下做策略搜寻。当然,用户也能够抉择通过annotation进行肯定水平的干涉。定义不同优化级别:用户能够抉择应用O2和O3两个优化级别,用以控制策略搜寻工夫。它们均为Cost based策略搜寻办法。其中O2级别采纳了肯定的Heuristic,会以就义轻微的并行策略品质为代价,换取更快地搜寻工夫,这对超大规模模型十分有用。O3级别对策略的品质有肯定的保障。正当拆解策略搜寻问题:TePDist采纳了多种手段,把策略摸索问题拆解成优化子问题,使用多种算法,别离对子问题进行求解,无效治理了问题的复杂性。具备特色的流水线并行布局:无需把DAG排成拓扑线性序,咱们把stage划分建模成整数线性规划问题(ILP),应用ILP Solver主动寻找通信量最小的切分计划。TePDist架构TePDist采纳Client/Server拆散的架构,将前端模型构建与后端策略搜寻施行解耦。Server端分为两个过程: 编译(Build Execution Plan):在这个过程中会构建执行打算,包含:主动分布式策略的搜寻,device mesh的调配,TepDist执行引擎的构建——Task Graph的构建以及为Task Graph确定动态调度程序。架构和流程列于下图左图中;运行(Execute Plan):编译阶段实现后,Client下达Input data供应指令,即可触发运行该Execution Plan的运行。为了谋求高性能和高可控性,咱们齐全自研了TePDist的运行时,具体蕴含无损分布式初始化,分布式checkpoint,NCCL简单通信域的治理,多worker协同治理,以及Task Graph级别的Memory reuse等。架构和流程列于下图右图中; 主动分布式策略搜寻主动分布式是TePDist外围性能之一,咱们对SPMD策略的搜寻空间做了正当的分层拆解,在不同的层级应用不同的算法。同时对用户提供不同优化级别,用以控制策略搜寻的工夫。对Pipeline stage划分则无需对DAG依照线性排序,而后应用ILP对其stage的划分进行建模,同时也为用户提供了用于管制搜寻工夫的剪枝参数。以下对这部分内容做简略的形容,技术的具体细节请参考咱们的论文:(TODO) SPMD Strategy因为HLO指令数较多,间接应用ILP建模求解可能会因问题规模过大,导致搜寻工夫过长。显然,通过缩图能够减小问题求解的规模。为此,TePDist将DAG划分为了三个层级,并对每层应用不同的优化办法进行求解。 Cone构造HLO DAG中存在大量的Cone构造,它对咱们的Formulation十分重要。什么是Cone构造?它是蕴含两种节点的子图:Root节点和非Root节点。其中,Root节点为具备多个输出或特色为计算密集型的节点;非Root节点为其余节点。咱们能够在HLO的DAG中辨认所有的Cone构造。大多数Cone构造都呈现出“倒三角”的状态,如上图中灰色三角区域标出的局部。显然,Cone代表更粗粒度的节点,咱们的算法须要为每个Cone确定切分策略。每个Cone应该有多少种可能得切分策略?答案是取决于其Cone Root有多少种切分策略。具体做法:在Cone内,通过对Cone Root节点枚举的每种切分策略,咱们都能够以通信代价最小为指标,通过贪婪或动静布局办法求解Cone内残余节点的切分策略。由此,咱们能够失去该Cone的多种不同切分策略,这些策略都是每个Cone的候选策略。 Segment尽管Cone构造的粒度更粗,在肯定水平上缩减了问题规模。但对大模型来说,Cone的数量仍然微小,可能须要进一步解决。事实上,大模型在构造方面具备反复重叠的特色。这意味着每个模型可能能够划分为多个相似“layer”的构造,从而将大模型分而治之。为此,咱们剖析了PAI平台上运行的Workload,并总结了一种通用的分图解决办法。通过图剖析辨认图中所有的要害节点(Critical nodes),并以它们为分图距离点,将整体模型划分为近似线性的多个Segment,如上图中标出的三个Segment,每个Segment都蕴含若干Cone构造。这里同样存在一个问题:每个Segment须要保留多少种候选策略?答案是取决于其蕴含的所有Critical nodes的切分策略数量组合。在做法上,通过对每个Critical node枚举切分策略,以其外部的Cone为根本单元,以最小通信代价为指标,应用整数线性规划(ILP)确定该segment的整体切分策略。 对于critical nodes的辨认,能够参考咱们论文中的形容。 整体GraphSegment之间的近线性拓扑,人造适宜动静布局求解。上述为每个Segment确定候选切分策略后,TePDist以最小通信代价为指标,应用动静布局(DP)对整体DAG实现确定惟一策略。 Pipeline StrategyTePDist在划分Pipeline stage时的一大特点是不须要将DAG排成线性序列。并且,TePDist将Stage划分建模成整数线性规划(ILP)问题求解。划分的根本准则是尽量保障各个stage计算量平均的状况下,谋求最小的通信切面。因为,DAG中的每个节点都能够找到它的先人节点和后继节点,这种前驱后继的依赖关系能够被形容成ILP问题的线性束缚,如下图中蓝色和红色所示。在策略搜寻工夫的压缩方面,TePDist向用户提供了用于管制stage计算平均性比率的管制接口。Pipeline建模的具体formulation能够参考咱们的论文。 分布式执行引擎TePDist本人定制了执行引擎,通过将HLO computation实例化并组织成Task Graph,且采纳动态调度执行。 Task Graph为了可能组合各种各样的并行模式,咱们形象了Task Graph。当将并行策略利用到HLO上时,被拆分或切分的多个HLO computation须要组合成残缺的执行逻辑,为此咱们形象出了Task Graph,它由一系列具备连贯关系的Task Node组成。在Task Graph中,咱们约定Source和Sink为起始和终止节点,其余Task Node均为各种HLO computation的实例。举例说明,对含有Gradient Accumulation的训练任务,原始的HLO computation被切分为Compute Gradients、Gradient Accumulation和Apply Gradients三个局部。那么由此创立三种不同的Task Node,而后组合成残缺的执行逻辑。下图展示了三种切分策略时,Task Graph的具体状态。 ...

April 24, 2023 · 1 min · jiezi

关于深度学习:新手如何学好Zbrush3D建模

笔刷菜单 在下拉菜单中抉择“主动遮罩”选项 关上“反面主动遮罩”按钮,点击之后会是橙色状态 而后你再用规范笔刷进行雕刻就不会对反面产生影响了,不过换笔刷之后这个按钮又须要从新开启,这点别忘了。 2.如何在Zbrush中创立一个弹出窗口? 先说一下什么是弹出窗口?将光标挪动到模型外表,通过按下先前设置好的快捷键就能在雕刻界面呼出的菜单就是“弹出窗口”。 那要怎么样能力创立一个弹出窗口呢?这可不是Zbrush默认开启的性能。 其实很简略,只须要给现存的菜单页绑定快捷键就行了 以 “光照菜单” 为例: 点击 “光照菜单” 将 “光照菜单” 固定到界面右侧 把光标挪动到 “光照菜单” 的名字下面,按住Ctrl+Alt而后单击 在键盘上抉择你想调配给 “光照菜单” 的快捷键就行了,比如说按下 “A”键,弹窗提醒抉择 “是” 就绑定胜利了 而后将光标挪动到模型外表,按下“A”键就能召唤出“光照菜单”间接调整成果了 当然,如果还是给每个Zbrush的现有菜单绑定快捷键太麻烦了,那也能够自定义菜单: 扩大最左侧的侧边栏 进入“偏好”(Preference)菜单,开启自定义性能 按住Ctrl+Alt,拖拽想要的参数和性能(除了Subtool没法挪动) 再次进入“偏好”菜单,抉择自定义UI选项,能够创立新的菜单 点击创立,输出新菜单的名字,新菜单就会浮现在菜单栏上了 再一次回到“偏好”菜单,按住Ctrl+Alt将“自定义子菜单”拖拽到刚刚的菜单栏上面,接着就能够把想要的性能挪动到子菜单,实现自定义菜单了 自定义菜单实现后,按下面的调配快捷键步骤绑定好快捷键,就能够在雕刻时轻松召唤出自定义菜单了 比起一级一级关上菜单还是太麻烦了,快捷键召唤弹出窗口能在很大水平上进步生产效率。

April 23, 2023 · 1 min · jiezi

关于深度学习:maya软件在建模上有什么优势

每个软件都有其长处和毛病,Maya也不例外。 然而Maya不仅仅是建模软件,而是Maya的生态系统。在大型和小型工作室中,你会看到许多基于Maya的管道,增加了本人的插件并建设了工作例程。 Autodesk Maya是VFX世界中的老玩家,因而,有大量的文档,教程,与问题相干的文章,插件和脚本等能够极大地提高工作速度和学习曲线的货色。 一、校准良好的用户界面乍一看,Maya UI可能会有点威逼,然而当你将其合成为几局部时,它实际上并不那么可怕和简单。 你有5种次要的UI设置:建模,配备,动画,FX和渲染。在“建模”子菜单中,你将看到3个用于多边形建模的次要选项卡:“网格”,“编辑网格”和“网格工具”,以及一个用于“曲线”和一个“外表”的选项卡。 当然,你有更多的选项卡和更多的性能应用办法,然而当初就让咱们保持基础知识。你能够通过应用CTRL + SHIFT单击任何性能轻松地设置自定义架子,并且基本上能够立刻构建本人的工具箱。 就像我在简介中所说的那样,Maya是一个微小的生态系统,在每个3D方面都有很多性能,Autodesk在将所有性能按逻辑设置进行治理方面做得很杰出。 二、建模工具包建模工具箱是性能十分弱小的工具箱,你将在其中找到疾速无效建模所需的所有。 你有抉择模式,选项的列表,并限度了建模和Autodesk求解时的根本工作。具备对称性,抉择转换器等。 接下来,你有了网格选项,此局部提供了“网格”菜单中的性能列表,以节俭拖动鼠标并在子菜单中搜寻它们的工夫。除了网格选项之外,还具备组件和工具,这只是Autodesk精心抉择以节省时间的顶部下拉菜单中的性能列表。三、糊状物MASH首先是Maya的插件,但Autodesk收买了它,当初Maya内置了它。MASH通常是基于节点的静止图形和程序成果工具抉择。 如果你要在曲面上分布对象,产生乏味的成果并与克隆器,变形器等一起玩,则能够应用此工具。借助MASH的实现,你仅在Cinema 4D中看到的货色就传到了Maya中,它的性能很棒。只需抉择模型,点击“创立MASH网络”即可开始应用此弱小的引擎。 就像我在下面所说的那样,Maya不仅仅是建模软件,而且Maya还是一个生态系统,因而,作为建模者,咱们能够享受来自动画等不同学科的工具。Maya在“动画”选项卡下能够找到大量变形器,你能够将它们与建模工具一起应用。 能够蜿蜒,雕刻,扭曲并在网格中执行许多其余非破坏性操作。变形器不仅是管制低网格还是管制高密度网格的好办法。只需抉择的网格物体,利用变形器,对其进行调整并删除历史记录,即可对变形进行烘焙,而且还不错。 四、紫外线工具包Autodesk彻底改变了Maya 2018中解决UV的形式。新的“ UV Toolkit”是功能强大的工具箱,具备大量性能。当初无需来到“ UV编辑器”窗口即可解决所有UV生成,从而使你的UV程序快得多。 Maya具备解决整个管道的性能,从建模到拆卸,动画和渲染。Maya是当先的3D软件之一,已被寰球许多工作室宽泛应用。如果花工夫在maya的学习上必定会在未来失去回报。 *起源:本文转载江山泪,所有图片素材源于网络,仅供学习分享,如侵权,请分割删除。

April 21, 2023 · 1 min · jiezi

关于深度学习:紫光展锐5G直播活动等你来

想要理解前沿的5G技术方向吗?想要理解5G平台解决方案及劣势利用场景吗?还在为得不到原厂反对困惑吗?还在为芯片产品受权懊恼吗?作为世界领先的平台型芯片设计企业,紫光展锐是寰球公开市场上3家5G芯片企业之一。目前展锐5G已成熟商用,在技术、产品与解决方案、终端利用及行业布局上造成了残缺的链路。展锐5G利用不仅仅深刻到消费者触手可及的终端产品,更赋能千行百业。如果你有上述问题,那么请看过去!这里有丰盛全面的展锐5G平台解决方案和利用案例,干货满满;这里有紫光展锐官网线上坦克邦平台的翻新业务分享,向你提供我的项目的全栈服务,让你播种满满。4.25号Webinar直播,咱们与你不见不散!快来戳动你的手指,连忙报名加入直播流动吧!!!点击图片“立刻报名”进入到报名页面,或扫描图中二维码理解详情。如你有任何业务上的需要,欢送搜寻坦克邦分割咱们。

April 18, 2023 · 1 min · jiezi

关于深度学习:ChatGPT如何助力IT从业者如何让ChatGPT帮助我们变现赚钱

随着人工智能技术的疾速倒退,chatgpt曾经成为了一个热门话题。它是一种人工智能语言模型,能够模仿人类对话,可能帮忙IT从业人员在很多方面晋升工作效率和生产力。那咱们该如何奇妙利用它呢? ChatGPT如何助力IT从业者?自然语言解决能力chatgpt可能解决自然语言,能够进行对话,而且能够学习和了解人类的语言。因而,它能够帮忙IT从业人员更加高效地与客户、共事和用户进行沟通。对于那些须要答复大量重复性问题的工作,chatgpt能够提供疾速的解决方案。应用chatgpt,IT从业人员能够缩小大量的工夫和精力。 个性化倡议和解决方案chatgpt能够依据用户的需要和背景提供个性化的倡议和解决方案。这种个性化的服务能够帮忙IT从业人员更快地找到适宜本人的解决方案,从而进步工作效率。而且,chatgpt能够通过学习用户的偏好和习惯,提供更加精确的倡议和解决方案,从而进一步晋升工作效率。 自动化客户反对chatgpt能够基于机器学习技术提供自动化客户反对。对于那些须要疾速响应客户需要的IT从业人员,这种自动化客户反对能够极大地提高工作效率,升高客户等待时间,并且可能更好地满足客户需要。应用chatgpt,IT从业人员能够更加高效地解决客户问题,从而节省时间和精力。 语音辨认和语音合成chatgpt能够帮忙IT从业人员进行语音辨认和语音合成。这能够让IT从业人员更加疾速地解决大量信息和数据,并可能更好地与其他人进行沟通。而且,语音辨认和语音合成也能够帮忙IT从业人员更好地解决多种语言,从而进一步提高工作效率。 机器翻译对于那些须要解决多种语言的IT从业人员来说,机器翻译是十分有用的。chatgpt能够通过机器学习技术进行机器翻译,从而帮忙IT从业人员更加高效地解决多种语言。应用chatgpt,IT从业人员能够缩小翻译老本和工夫,从而进步生产力和效率。 自动化文本生成chatgpt能够帮忙IT从业人员自动化生成文本。这能够让IT从业人员更加疾速地解决大量信息和数据,并且缩小手动输出的工夫。自动化文本生成还能够缩小手动输出的谬误和疲劳,从而进步工作效率和生产力。 总之,chatgpt是一种十分有用的工具,能够帮忙IT从业人员更加高效地解决信息和数据,进步生产力和效率。它能够进行自然语言解决、提供个性化的倡议和解决方案、自动化客户反对、语音辨认和语音合成、机器翻译以及自动化文本生成等方面提供帮忙。将来,随着chatgpt技术的一直倒退,它将成为IT从业人员不可或缺的工具之一。 ChatGPT是一种人工智能技术,它能够提供自然语言对话性能,让用户能够与计算机进行语言交互。它能够帮忙咱们解决各种问题,例如寻找答案、实现工作、实现目标等。除此之外,ChatGPT还能够帮忙人们赚钱。在本文中,咱们将具体列举10种通过ChatGPT变现赚钱的形式。 ChatGPT如何变现赚钱?语音助手服务ChatGPT能够作为一种语音助手,帮忙人们解决诸如日程安排、揭示、定位、购物等问题。你能够通过ChatGPT提供这样的服务,并收取肯定的费用。 在线咨询服务ChatGPT能够作为一种在线征询工具,帮忙人们解决各种问题,例如衰弱、财务、法律等。你能够通过ChatGPT提供这样的服务,并收取肯定的费用。 在线教育服务如果你是一位教育工作者,你能够利用ChatGPT提供在线教育服务。你能够利用ChatGPT作为一种交互式工具,帮忙学生学习各种学科,并收取肯定的费用。 智能广告通过ChatGPT,你能够提供智能广告服务。你能够利用ChatGPT剖析用户的趣味和需要,并为他们提供有针对性的广告。这样,你能够为广告主带来更多的客户,并取得肯定的收益。 在线购物服务如果你是一位电商企业家,你能够利用ChatGPT提供在线购物服务。你能够利用ChatGPT为用户提供智能举荐、搜寻、比价等性能,帮忙他们更快地找到所需商品,并实现购买。你能够通过收取佣金来赚取收益。 智能客服利用ChatGPT,你能够提供智能客服服务。你能够利用ChatGPT作为一种交互式工具,答复用户的问题,并解决他们的问题。这样,你能够为企业提供更好的客户服务,并取得肯定的收益。 个性化举荐服务通过ChatGPT,你能够提供个性化举荐服务。你能够利用ChatGPT剖析用户的需要和趣味,为他们举荐有价值的内容和产品。这样,你能够进步用户的满意度,并取得肯定的收益。 自然语言解决服务如果你是一位技术人员,你能够利用ChatGPT提供自然语言解决服务。你能够利用ChatGPT剖析自然语言数据,例如文本、语音等,为企业提供人工智能服务,例如情感剖析、机器翻译等。这样,你能够为企业提供更好的技术支持,并取得肯定的收益。 聊天机器人利用ChatGPT,你能够开发聊天机器人。你能够为用户提供各种服务,例如问答、娱乐、新闻、天气等。你能够通过收取广告费、订阅费等形式来赚取收益。 语音辨认服务如果你是一位技术人员,你能够利用ChatGPT提供语音辨认服务。你能够利用ChatGPT剖析语音数据,并为企业提供人工智能服务,例如语音交互、语音搜寻等。这样,你能够为企业提供更好的技术支持,并取得肯定的收益。 总结 通过ChatGPT,咱们能够为用户提供各种服务,并实现本人的商业指标。无论你是一位教育工作者、电商企业家、技术人员还是一位创业者,你都能够利用ChatGPT来实现本人的幻想。 心愿这篇文章对你有所帮忙。 ChatGPT体验地址 : https://www.chatgpt-future.com.cn/chat-ai

April 17, 2023 · 1 min · jiezi

关于深度学习:TensorFlow-决策森林详细介绍和使用说明

应用TensorFlow训练、调优、评估、解释和部署基于树的模型的残缺教程 两年前TensorFlow (TF)团队开源了一个库来训练基于树的模型,称为TensorFlow决策森林(TFDF)。通过了2年的测试,他们在上个月终于发表这个包曾经筹备好公布了,也就是说咱们能够真正的开始应用了。所以这篇文章将具体介绍这个软件包,并向你展现如何(无效地)应用它。 在这篇文章中,咱们将应用美国小企业管理局数据集训练一些贷款守约预测模型。模型将应用曾经预处理的数据进行训练。装置TensorFlow决策森林非常简单,只需运行 pip install tensorflow_decision_forests。 TensorFlow Decision Forest1、什么是TFDF? TensorFlow决策森林实际上是建设在c++的Yggdrasil决策森林之上库的,Yggdrasil决策森林也是由谷歌开发的。最后的c++算法旨在构建可扩大的决策树模型,能够解决大型数据集和高维特色空间。通过将这个库集成到更宽泛的TF生态系统中,用户无需学习另一种语言就能够轻松地构建可扩大的RF和GBT模型。 2、为什么要用它? 与XGBoost或LightGBM相比,这个库的次要劣势在于它与其余TF生态系统组件严密集成。对于曾经将其余TensorFlow模型作为管道的一部分或应用TFX的团队来说,这是十分有用的,因为TFDF能够很容易地与NLP模型集成。如果你正在应用TF Serving为模型提供对外服务,这个库也是能够用的,因为它是官网的原生反对(不须要ONNX或其余跨包序列化办法)模型的部署。最初这个库为还提供了大量参数,能够依据XGBoost、LightGBM和许多其余梯度加强机(GBM)办法来调整取得近似模型。这意味着不须要在训练过程中在不同的GBM库之间切换,这从代码可维护性的角度来说十分好。 模型训练1、数据筹备 咱们应用了数据处理后的版本,所以不须要进行数据的预处理: # Read in data train_data: pd.DataFrame=pd.read_parquet("../data/train_data.parquet") val_data: pd.DataFrame=pd.read_parquet("../data/val_data.parquet") test_data: pd.DataFrame=pd.read_parquet("../data/test_data.parquet") # Set data types NUMERIC_FEATURES= [ "Term", "NoEmp", "CreateJob", "RetainedJob", "longitude", "latitude", "GrAppv", "SBA_Appv", "is_new", "same_state", ] CATEGORICAL_FEATURES= [ "FranchiseCode", "UrbanRural", "City", "State", "Bank", "BankState", "RevLineCr", "naics_first_two", ] TARGET="is_default" # Make sure that datatypes are consistent dsets= [train_data,val_data,test_data] fordindsets: d[NUMERIC_FEATURES] =d[NUMERIC_FEATURES].astype(np.float32) d[CATEGORICAL_FEATURES] =d[CATEGORICAL_FEATURES].astype(str)2、特色 ...

April 17, 2023 · 3 min · jiezi

关于深度学习:Jina-AI-创始人肖涵博士揭秘-AutoGPT-喧嚣背后的残酷真相

Auto-GPT 到底是一个开创性的我的项目,还是一个被适度炒作的 AI 试验?本文为咱们揭开了清静背地的假相,并揭示了 Auto-GPT 不适宜理论利用的生产局限性。背景介绍这两天,Auto-GPT,一款让最强语言模型 GPT-4 可能自主实现工作的模型,一夜成名,让整个 AI 圈疯了。短短七天工夫,它就在 GitHub 上取得了惊人 Star 数量,曾经冲破 5 万,并吸引了有数开源社区的关注。 此前爆火的 ChatGPT,惟一不太好用的中央,就是须要人类输出 Prompt。而 Auto-GPT 的一大冲破是,能够让 AI 自我提醒,换句话说,AI 都齐全不须要咱们人类了? 在为 Auto-GPT 狂欢的同时,咱们也有必要退一步扫视其潜在的不足之处,探讨这个「AI 神童」所面临的局限和挑战。 接下来,肖涵博士将和咱们深入探讨 Auto-GPT 到底是一个开创性的我的项目,还是另一个被适度炒作的人工智能试验。 Auto-GPT 是如何工作的?不得不说,Auto-GPT 在 AI 畛域掀起了微小的波澜,它就像是赋予了 GPT-4 记忆和实体一样,让它可能独立应答工作,甚至从教训中学习,一直进步本人的性能。 为了便于了解 Auto-GPT 是如何工作的,让咱们能够用一些简略的比喻来合成它。 首先,设想 Auto-GPT 是一个老谋深算的机器人。 咱们每调配一个工作,Auto-GPT 都会给出一个相应的解决打算。比方,须要浏览互联网或应用新数据,它便会调整其策略,直到工作实现。这就像领有一个能解决各种工作的私人助手,如市场剖析、客户服务、市场营销、财务等。 具体来说,想让 Auto-GPT 运行起来,就须要依附以下 4 个组件: 1. 架构Auto-GPT 是应用弱小的 GPT-4 和 GPT-3.5 大型语言模型构建的,它们充当机器人的大脑,帮忙它思考和推理。 2. 自主迭代这就像机器人从谬误中学习的能力。Auto-GPT 能够回顾它的工作,在以前的致力的根底上再接再厉,并利用它的历史来产生更精确的后果。 3. 内存治理与向量数据库(一种内存存储解决方案)集成,使 Auto-GPT 可能保留上下文并做出更好的决策。这就像给机器人装备了长时记忆,能够记住过来的经验。 4. 多功能性Auto-GPT 的文件操作、网页浏览和数据检索等性能使其用处宽泛。这就像赋予机器人多种技能来解决更宽泛的工作。 ...

April 16, 2023 · 3 min · jiezi

关于深度学习:用CTGAN生成真实世界的表格数据

随着CLIP和稳固模型的疾速倒退,图像生成畛域中GAN曾经不常见了,然而在表格数据中GAN还是能够看到它的身影。 事实世界的复杂性与许多方面相干(例如,缺失数据、不均衡数据、噪声数据),但最常见的一个问题是蕴含异构(或“混合”)数据,即蕴含数字和分类特色的数据。 因为每种特色类型都可能具备本人的外在特色,异构数据对合成数据生成过程提出了额定的挑战。 CTGAN(Conditional Tabular Generative Adversarial Network)就是通过“捕捉”事实世界数据的这种异质性,与其余架构(如WGAN和WGAN- gp等)相比,已被证实对各种数据集更加强壮和可泛化。 在本文中,咱们将介绍CTGAN,并且阐明哪些属性使得它对表格数据如此高效,以及为什么和何时应该利用它。 真实世界的表格异构数据咱们所说的“表格数据”,即能够以相似表格的格局进行结构化和组织和存储的数据。特色(有时称为“变量”或“属性”)以列示意,而察看值(或“记录”)对应于行。真实世界的数据通常包含数字和分类特色: 数值特色(也称为“间断的”)是那些编码定量值的特色,而分类特色(也称为“离散的”)示意定性测量。 上面是一个支出数据集的示例,age和fnlwgt是数字特色,而其余的是分类特色。 为什么异构表格数据须要CTGAN ?从最后的GAN开始,钻研人员始终在对原始架构、新的损失函数或优化策略提出批改,以解决特定的GAN局限性。 例如,WGAN和WGAN- gp等架构在训练稳定性和收敛工夫方面对GAN进行了显著改良。,PacGAN的设计是为了缓解模式解体,这是传统GAN架构的另一个常见毛病。 然而在数据异构方面(即解决数字和分类特色及其外在特色),这些体系结构仿佛依然不尽如人意。它们在数字特色方面体现得很好,但它们很难捕获分类特色的散布,而分类特色的存在对于大多数真实世界的数据集来说都是事实的。 这些架构都没有解决蕴含混合特色类型的异构数据——包含数字和分类。然而CTGAN是专门设计解决表格数据集的。在其余架构(如WGAN-GP和PacGAN)取得成功的根底上,CTGAN更进一步,将合成数据生成视为一个残缺的流程——从数据筹备到GAN架构自身。也就是说,CTGAN关注数字和类别特色的特定特色,并将这些特色合并到生成器模型中。 数值特色:非高斯分布和多峰分布CTGAN 引入特定归一化,与像素值通常遵循相似高斯分布的图像数据相同,表格数据中的间断特色通常是非高斯分布的。它们偏向于遵循多峰分布,其中概率分布具备不止一种模式,即它们呈现出不同的部分极大值(或“峰值”): 为了捕捉这些行为,CTGAN 应用特定于模式的归一化。应用 VGM(变分高斯混合)模型,间断特色中的每个值都由示意其采样模式的独热向量和示意依据该模式归一化的值的标量示意: 分类特色:稠密独热编码向量和高分类不均衡CTGAN引入了条件生成器,旨在解决由分类特色引入的两个次要挑战: 一个是独热编码向量在实在数据中的稠密性。当生成器输入所有可能的类别值的概率分布时,原始的“实在”类别值间接编码在一个独热向量中。通过比拟实在数据和合成数据之间的散布稠密性,判断器很容易辨别这些数据。 另一个是与某些分类特色相干的不均衡。如果一个特色的某些类别没有被充沛示意,那么生成器就不能充沛地学习它们。如果咱们关注预测建模或分类工作,数据过采样可能是缓解这一问题的解决方案。然而因为合成数据生成的指标是模仿原始数据的属性,所以这个解决方案不成立。 CTGAN引入了一个条件生成器来解决不均衡类别,然而这通常会导致GAN的模式解体。在条件也没有完满的解决这个问题,它也须要筹备输出以便生成器能够解释条件,并且生成的行须要保留输出条件。 CTGAN生成表格数据代码示例CTGAN的公布曾经有2-3年的工夫了,咱们能够间接应用 上面的 代码装置官网的实现并应用它: pip install ctgan然而,咱们这里要介绍一个更简略并且不便的应用形式,还记得stable diffusion web UI吗,我可间接能够用过点点点就能生成图片,当初ydata-synthetic也推出了一个Streamlit应用程序,咱们能够间接通过webUI来执行数据读取,剖析,新生成的合成数据的残缺流程。 首先要装置ydata-synthetic。别忘了加上“streamlit”: pip install "ydata-syntehtic[streamlit]==1.0.1"而后,关上一个Python文件增加上面2行代码: from ydata_synthetic import streamlit_app streamlit_app.run()运行后,控制台将输入能够拜访应用程序的URL ! 1、训练一个模型 训练合成器很简略:你能够拜访“Train a Synthesizer”选项卡并上传一个文件(我应用的是下面的支出数据集): 文件加载后须要指定哪些特色是数字的和分类的: 而后,能够抉择合成器参数,即咱们打算应用的模型及其参数,如批量大小、学习率和其余设置(例如噪声维度、层维度和正则化常数beta等等)。抉择训练轮数,而后点击一个按钮开始训练: 我在示例中应用了CTGAN,这个UI还反对其余模型,如GAN、WGAN、WGANGP、CRAMER和DRAGAN。 2、生成数据样本 要生成新的样本,咱们能够拜访“Generate synthetic data”选项卡,抉择要生成的样本数量,并指定保留它们的文件名。模型在默认状况下以trained_synth保留和加载。也能够通过提供它的门路来加载先前训练过的模型。 “Generate synthetic data profiling”能够生成一个数据分析报告来查看合成数据的整体特色,设置实现后能够点击 “Generate Samples”开始生成。 ...

April 15, 2023 · 1 min · jiezi

关于深度学习:狂追ChatGPT开源社区的平替热潮

目前,不少优质的类ChatGPT模型都只能通过API接入,而一些开源LLM的成果与ChatGPT相比差距不小。不过,近期开源社区开始密集发力了。 其中,Meta的LLaMA模型透露是开源“ChatGPT”静止的代表性事件。基于LLaMA模型,开源社区近期接连公布了ChatLLaMa、Alpaca、Vicuna、Koala等模型,成果直追GPT-3.5,它也因而成为了开源LLM畛域的翻新地。 4月12日,Databricks齐全开源了12B参数的指令追随LLMDolly 2.0,包含训练代码、数据集(15000个prompt/response pairs)和模型权重,这些都能够随便商用。Dolly 2.0 基于EleutherAI pythia模型系列而开发。同一天,为了以更低成本、更快速度训练类ChatGPT模型,微软公布了DeepSpeed-Chat。 来自开源社区的“ChatGPT平替”浪潮正在暴发,LLM的生态构建将迎来新改革。 作者 | TooooldOneFlow编译翻译 | 贾川 当今,开源社区始终在寻求一种独立于OpenAI和ChatGPT的办法,正如晚期的飞行器想要解脱重力一样。 往年三月初,斯坦福大学AI研究所(Stanford HAI)分享了一种胜利办法“Alpaca: A Strong, Replicable Instruction-Following Model(https://github.com/tatsu-lab/stanford_alpaca)”,证实指令调优是一种有前途的办法。于是,这场ChatGPT“平替”的竞争开始了! (本文在遵循CC BY-NC-SA 4.0协定的根底上由OneFlow编译公布,译文转载请分割OneFlow取得受权。原文:https://toooold.com/2023/04/08/magnificient_underdogs.html?co...) 1再思考大型语言模型之“大”LLM指的是“大型语言模型”,通常认为只有足够大的模型能力达到GPT的性能程度。然而,斯坦福的Alpaca提出了一条重要信息:只需对较小模型进行无限的指令调优,同样也能在重要工作中体现良好。这能够分成两个方面来解释:较小的模型和重要工作。 在Alpaca对Llama的7B模型进行指令调优之前,人们普遍认为模型越大,性能能力达到GPT的程度,而且可能须要一个175B的模型才可能与GPT-3相媲美。Alpaca利用Llama的预训练模型为根底,仅应用来自GPT模型的一个十分小的调优数据集(只有52000个样本),建设了一个具备对话性能的LLM。这表明:在领有良好的指令调优数据集的状况下,只有语言模型足够弱小,就能够达到良好的性能,而不须要十分大的模型来匹配GPT-3。 此外,Alpaca和Llama还表明,LLM并不需要在所有工作中体现得很好。例如,Alpaca和Llama 7B在解决编程相干工作时体现不佳,但在对话和个别工作方面体现良好。指令调优提供的逐渐办法是,增加更多常识到Alpaca模型中并利用其已学到的对话性能。例如,通过增加额定的2万个编程特定样本,能够让codealpaca在许多编程工作中体现良好。 另一方面,OpenAI展现了其超大型模型的工程债,例如可用工夫无限以及ChatGPT Plus客户每3小时只能进行25个查问等等。这些结果表明:较小的LLM可能是更好的抉择。 事实上,当初Llama和Alpaca 7B曾经可能运行在最便宜的设施上,如Macbook Air、树莓派4和谷歌Pixel 6手机上,因而它们成为了AI时代的新“覆灭兵士”。 它能运行LLaMA 7B吗?这会不会是“它能运行Doom吗”的新表述?——@ylecun2更多的ChatGPT开源“平替”退出这场角逐Llama和Alpaca率先开启了这场角逐,随后更多的LLM模型也退出了其中。它们带来了更多的数据,以改良Alpaca;同时还有更快的调优办法或其余网络结构来代替Llama。 Alpaca须要更多的调优数据。来自“Guanaco: A Multilingual Instruction-Following Language Model Based on LLaMA 7B”(https://github.com/Guanaco-Model/Guanaco-Model.github.io)的Guanaco通过将Alpaca的指令用多种语言从新编写,并增加新的指令以对齐多种语言、理解内容等形式,引入了530k的多语言数据。像“Chinese-Vicuna: A Chinese Instruction-following LLaMA-based Model”(https://github.com/Facico/Chinese-Vicuna)和Chinese-LLaMA-Alpaca(https://github.com/ymcui/Chinese-LLaMA-Alpaca)这样的语言特定模型也提供了优化。源自“Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90% ChatGPT Quality”(https://github.com/lm-sys/FastChat#vicuna-weights)的Vicuna则专一于改良Alpaca的聊天性能。 微软的低秩(Low Rank)采纳形式“LoRA”对减速tuning起了很大作用。这个想法很好:它将权重“解冻(freezed)”,但“在Transformer架构的每个层中注入可训练的秩合成矩阵(rank decomposition matrices)”,使得调优速度能够进步3倍。LoRA技术不仅对语言模型有用,它还有助于更快地调优文本到图像工作中的稳固扩散(stable diffusion)模型。(https://github.com/cloneofsimo/lora) 与此同时,Llama在这个框架中并不是那么重要,能够被替换成其余模型。Meta的Llama不容许对任何代码或权重进行商用。为更加独立,Lit-llama编写了Llama推理代码,但它仍须要应用Llama权重。开源社区提供了一些抉择,其中GLM和RWKV是最有前途的两个模型。 GLM(https://arxiv.org/abs/2103.10360)是一系列不同尺寸的模型。它采纳的办法与Meta的Llama不同,其6B模型具备聊天性能,可称为ChatGLM。与此同时,RWKV十分独特。它没有追随像GPT中的重叠式解码器Transformer构造,而是应用了相似RNN的递归网络,因而其上下文长度在实践上是有限的,而且其推理速度更快,内存老本更低。RWKV能够达到Transformer模型的品质,其对话版本可作为ChatRWKV找到。 当然,咱们也没有遗记上一代的GPT家族。Databricks开源了他们应用GPT-neox网络结构和利用指令调优的Dolly。后果也不错! 咱们能够在Language Model Evaluation Harness框架(https://github.com/EleutherAI/lm-evaluation-harness)中比拟LLM的性能,基准在这里https://bellard.org/ts_server/。截至目前(2023年4月上旬),这场角逐中LLama的体现最好。 ...

April 14, 2023 · 1 min · jiezi

关于深度学习:一张图就是一个故事用-SceneXplain-讲个好故事

精准的图像形容不仅能够让人们更容易了解图像背地的故事和信息,还能够让图像更易于被检索和辨认。然而,对于那些简单的图像来说,写出既精确又具体的形容切实是件十分艰难的事件。 图像形容算法的演变所谓 Image Caption(图像形容)工作,就是让计算机可能依据一张图片主动生成相应的文字描述。在晚期的模型,比方 OpenAI 的 CLIP,利用了无监督学习和微调技术,通过海量的图片和文本数据集进行了训练,了解了图片和文本间的分割,从而可能生成有意义的图像形容。 起初,一种名为 BLIP-2 的算法应运而生,它采纳了更高效的预训练策略。BLIP-2 利用现成的解冻预训练图像编码器和大型语言模型,通过一个轻量级的查问式 Transformer 来连贯不同的模态。不仅缩小了训练参数,还保障了各种视觉-语言工作上获得 SOTA 体现。 得益于多模态技术的一直倒退,图像形容这个须要联合 CV 和 NLP 的老大难问题在近些年里迈出了一大步。但直到现在,大部分 AI 生成的图像形容都比拟抽象简短,难以充沛展现图像的丰盛外延。尤其为简单图像所生成的文本形容在准确性方面仍存在显著有余,更别提那些波及多个物体、互动和简单细节的图像了。 现有图像形容解决方案面临的挑战1. 过于简化或空洞的阐述 如图,大多数图像字幕算法给出的是“一个人和一条狗”,看似精确,但其这张图里有十分丰盛的物体和故事。他们在里面做什么,他们为什么会露营,左边的背包有什么暗示吗? 2. 短少细微差别和关系 如图,简略地给出“对象 A 和对象 B”的形容是远远不够的,两者间的空间关系传播了截然不同的外延。 3. 解决乐音和蹩脚的图像品质 如图,两头显示的“攻打”比照扰动原来照片,只管人类眼睛瞟一眼就晓得和原始图片没变动,但图像形容算法仍然标错了分类。 4. 难以解决简单图像 如图,一眼就是亮堂和丰盛的瑰丽色调,然而很多图像形容算法只能给出简略的“波提切利的维纳斯的诞生”的阐明,单单一个名字切实让人只知其一;不知其二,让观众无奈了解图像所展示的品尝。   SceneXplain 生成的形容 一幅标志性的画作「维纳斯的诞生」开展在眼前,女神维纳斯从贝壳中诞生,周身环绕着神话人物和天界人物,包含美人鱼、天使和手持花束的女人。这些人物之间奥妙的交互营造出一种迷人和惊奇的感觉,宛如在庆贺维纳斯来临于人间。这优雅的构图引领观众进入神话畛域,惊叹于这个永恒场景所展示的壮丽和优雅。相比起下面生成的枯燥无味的题目,由 SceneXplain 生成的这样一段丰盛活泼的描述不仅可能帮忙咱们更好地观赏图像,还能让咱们深刻理解其审美价值。 应答多媒体内容的挑战,SceneXplain 让故事破图而出总而言之,现有图像字幕解决方案获得了很大提高,可能为图片生成相干的形容,然而还无奈为简单图像生成细节、上下文和细微差别的形容。如何进一步提高解决这样简单图像的能力,是以后图像形容技术面临的重要挑战。 这也正是 SceneXplain 一个箭步跨进来的契机,这是一个颠覆性的工具,它不止停留在外表,而是进一步拓宽了图像形容的边界。它冲破了传统图像形容算法的局限性,提供了简练业余、引人入胜的图像叙事体验。凭借 用户敌对的界面、无缝 API 集成 和 弱小的多语言反对,不便开发者轻松集成到他们的多模态利用中。 SceneX 生成的文本拓展了图片的表现力,不论是动漫,风光,商品,还是产品 UI,它都精确辨认了图片中要害信息,了解了画面表白的氛围,并深刻捕捉到了图片中的细节,并用晦涩连贯的语言实现了形容。 <,,,> SceneXplain vs Midjourney describe咱们对 SceneXplain 与市面上风行的图像形容工具和算法的性能进行了测评。 ...

April 13, 2023 · 1 min · jiezi

关于深度学习:展心展力-metaapp基于-DeepRec-的稀疏模型训练实践

作者 metaapp-举荐广告研发部:臧若舟,朱越,司灵通 1 背景举荐场景大模型在国内的应用很早,早在 10 年前甚至更早,百度曾经用上了自研的大规模分布式的 parameter server 零碎联合上游自研的 worker 来实现 TB 级别的万亿参数的稠密模型。起初,各家平台也陆续基于这种计划,开发了本人的分布式训练零碎,广泛特点是大量应用 id embedding,因而参数量微小,模型大小也十分夸大。当然,随着开源训练工具 TensorFlow/Pytorch 的风行,应用 TensorFlow/Pytorch 作为 worker,联合自研 ps 的计划也非常风行。究其原因,以 TensorFlow 为例,尽管内置了分布式训练零碎,然而对于大规模 id embedding 的反对却十分蹩脚,无奈作为残缺的平台应用。而应用 TensorFlow+ 自研 ps 的计划也存在不少问题,比方自研 ps 个别对于特色输出都有特定的要求、二次开发老本比拟低等。 一个典型的分布式 worker-ps 架构 2 业务介绍metaapp- 举荐广告研发部,次要负责 metaapp 拳头产品 233 乐园的首页信息流的举荐和广告零碎,是比拟传统的推广搜组。咱们在 2020 年之前也是采纳了 TensorFlow+ 自研分布式 ps 的计划,模型大小在靠近 TB 级别(业务体量较小),整个计划的迭代和保护老本都比拟高。 在这种背景下,通过多方考量,阿里云机器学习平台 PAI 开源的 DeepRec(脱胎于 PAI-TF),作为反对了淘宝搜寻、猜你喜爱、定向、直通车等外围业务的训练平台,间接基于 TensorFlow 做二次开发,针对稠密模型在分布式、图优化、算子、Runtime 等方面进行了深度的性能优化,并且齐全开源。 而因为咱们公司自身跟阿里云有着深度的单干,阿里云也被动介绍了过后还是外部我的项目的 DeepRec 给咱们尝试。在近 2 年的工作后,DeepRec 曾经全量用于咱们的模型训练和线上 inference,并且获得了显著的性能晋升和老本降落。 3 稠密模型训练3.1 EmbeddingVariable 多级存储因为模型参数量大,一些特色的 embedding 大小达到了靠近 TB 级别,齐全基于内存存储对于老本的要求过高,因而自然而然就会想到多级存储:将最热的 embedding 放在显存或者内存里,其余的能够分级放在 PMEM、SSD 等老本较低的存储介质中。而 DeepRec 中 提供了基于 EmbeddingVariable 的 Embedding 多级存储性能。DeepRec 目前对于 embedding 寄存在各种存储介质的反对曾经相当欠缺。 ...

April 13, 2023 · 3 min · jiezi

关于深度学习:谷歌研究科学家ChatGPT秘密武器的演进与局限

起源|TalkRLOneFlow编译翻译|徐佳渝、贾川 同样是基于GPT预训练模型,为什么ChatGPT的成果要远远超出GPT-3等前几代模型?答案曾经揭晓,成就ChatGPT的秘密武器在于RLHF,也就是人类反馈的强化学习。 在预训练阶段,GPT模型学习对于这个世界的所有,而在RLHF阶段,ChatGPT更关注的让模型输入正确、无益的失当后果,并对后果一直进行微调。 具体而言,RLHF阶段的调优又分为三大步骤:第一步:通过监督学习,用人类对不同提醒的“现实”答复数据微调LLM;第二步:LLM 为每个提醒提供多个答案,而后由人工评估员对这些答案进行排名(该排名用于训练处分模型);第三步:用近端策略优化(PPO)模型来优化LLM的处分模型。 此前,ChatGPT负责人John Schulman介绍了RLHF想法的起源,关键在于他们在语言模型中利用强化学习,应用人类反馈去定义处分函数。此外,OpenAI的RLHF所应用的诸多技术也是基于前人钻研根底上组合而成的成绩,其中就包含Natasha Jaques的工作。 Natasha是Google Brain的高级钻研科学家,OpenAI的不少工作援用了她所发表的与RLHF和对话模型相干的强化学习论文。在近期Robin Ranjit Singh Chauhan主持的TalkRL播客节目中,她从第三方视角,介绍了对RLHF及其处分模型相干思路,以及对强化学习钻研与AGI倒退等方面的认识。 目前,她的钻研重点是社交强化学习(Social Reinforcement Learning),开发联合来自社交学习和多智能体训练的见解的算法,以进步AI智能体的学习、泛化、合作以及人机交互能力。2024年1月,她将退出华盛顿大学计算机科学学院负责助理传授。 (以下内容经受权后由OneFlow编译公布,译文转载请分割OneFlow取得受权。起源:https://www.talkrl.com/episodes/natasha-jaques-2) 1RLHF相干钻研与老本效益Robin Chauhan:你很早就开始了人类反馈的强化学习(RLHF)以及对话模型这方面的相似钻研,而且OpenAI发表的许多重要论文援用了你的研究成果。是否谈谈你的钻研与OpenAI以后的钻研和这些模型之间的分割? Natasha Jaques:回到2016年,过后我正在思考如何利用预训练语言模型进行微调。具体来说,我关注的是LSTM模型,并尝试应用强化学习对其进行微调。那时,我关注的点不在语言自身,而是音乐生成和分子生成之类的办法,例如生成相似药物分子的办法。 在我看来,分子生成是一个很好的示例。咱们能够基于已知分子数据集去训练一个监督模型,并生成新的分子,然而这些分子可能不足咱们所需的个性,如易于合成药物。因而,咱们还须要对分子的“合成可及性(synthetic accessibility)”进行评估。但仅依附数据集训练是不够的,因为这样无奈失去优化的分子。如果仅仅优化分子的合成可及性,也可能会生成一些无用的分子。 因而,咱们须要对这两个方面进行评估和优化。对于这一问题,咱们能够应用强化学习来优化药物相似性(drug likeness)或合成可及性,但因为数据存在缺点,这种办法并不完满。 咱们提出了一个解决方案:首先在数据集上进行预训练,而后再应用强化学习来优化某些处分,同时最小化预训练策略与以后策略之间的KL散度。这种办法能够灵便地联合监督学习和强化学习,应用监督学习来取得数据集中的有用信息,同时应用强化学习来优化在数据分布空间内具备高回报的序列。能够看出,这与以后应用的RLHF办法密切相关。 在该技术中,咱们首先在数据集上对大型语言模型进行预训练,而后通过人类反馈来优化模型,同时最小化优化模型与预训练先验模型之间的KL散度,这对于RLHF框架有重要意义。 同时,我也在钻研从人类反馈中学习的RLHF办法。2019年前后,咱们采纳了同样的KL管制办法,即让对话模型尝试优化与人类交谈取得的信号,而非让人类评估对话的好坏,同时采纳与OpenAI的RLHF算法不同的形式来实现偏好排序。 咱们的指标是从与人类对话的隐含信号中学习,而非仅仅依附人类的评估来进行优化。咱们不须要人们额定提供反馈,而是通过剖析文本的情感等隐含信号来为模型提供处分信号。 例如,当对话中的人听起来广泛快乐时,咱们就会将其视为侧面处分信号来训练模型。反之,当他们听起来丧气或困惑时,可能是模型说了一些胡话,咱们会将其视为负面处分信号。因而,咱们应用同样的技术来优化这些信号,以进步模型的体现。 Robin Chauhan:这听起来很像ChatGPT当初正在进行的工作。兴许函数迫近器(function approximator)略有不同,或是取得反馈的形式有所不同,但从底层原理来看,它实际上基于RLHF。 Natasha Jaques:没错,不过也有一些要害区别。OpenAI采纳了不同的办法来解决人类反馈,该办法与咱们在2019年的论文中所应用的有所不同,区别在于他们训练了一个处分模型。他们的办法是请一群人为两个输入评分,而后通过训练模型来迫近这些评分。实际上,早在OpenAI摸索应用人类偏好进行深度强化学习钻研时,就曾经提出过这个想法。 相比之下,我在2019年的钻研是对于离线强化学习(offline RL)。过后,我应用了特定输入的理论人类评分作为处分样本进行训练,但不足一个通用的处分模型。因为训练处分模型的办法能够进行屡次采样,实际上具备良好的可扩展性。 Robin Chauhan:OpenAI联结创始人和PPO算法发明者John Schulman致力于钻研RLHF。他谈到ChatGPT的兄弟模型InstructGPT须要大量的人类反馈。此外,须要具体而简短的评分阐明来评估人类反馈,而获取这些人类反馈须要付出相当大的老本。这种老本会限度RLHF的利用吗?还是说老本并不重要,从回报来看齐全值得? Natasha Jaques:在InstructGPT之前,OpenAI就曾经在摘要(summarization)方面进行了大量的钻研。而在摘要钻研中,可能无效使用RLHF的关键因素之一,是投入大量精力获取高质量的人类数据。 在OpenAI的一篇摘要钻研论文中,他们采纳了一种更好的评估者招募办法,钻研人员与评估者共享Slack群组,并答复评估者的问题以确保评估者与钻研人员保持一致。这样的投入显然是十分低廉的。 值得一提的是,在InstructGPT能够看到一个景象:应用RLHF训练的13亿参数模型的体现要优于应用监督学习训练的1750亿参数模型。也就是说,只需应用RLHF,成果就能够赶超100倍大小的模型,而训练100倍大小的模型所需的计算成本相当低廉。尽管OpenAI并未公开他们用于收集人类数据和训练巨型模型的具体破费金额,但不难发现,因为RLHF能够升高训练更大型号模型的老本,实际上可能更具老本效益。 Robin Chauhan:在我看来,他们通常应用基于on-policy的PPO(Proximal Policy Optimization)办法来解决数据集。这种办法无奈重复使用数据,因为它们依赖于以后模型样本数据或十分靠近模型的数据。如果对这些数据进行训练后,模型呈现偏差,那么该数据集是否依然无效?或者说该数据集是否能够用于训练其余模型? Natasha Jaques:这些数据集并非是一次性的。处分模型的训练过程理论相似于对文本摘要进行比拟。这种比拟的后果不仅仅取决于策略模型自身,更是一种较为主观广泛的后果,所以具备off-policy个性,能够反复的应用这些数据。 2处分模型的局限性Robin Chauhan:John Schulman指出,尽管人类反馈在训练过程中具备肯定有效性,但如果应用雷同的处分模型进行长时间训练,性能可能在某个时刻降落。因而我认为,在每个阶段后须要持续收集额定的人类反馈,而为了进一步提高性能,则可能须要应用全新的数据集。你怎么看? Natasha Jaques:我不太熟悉OpenAI的工作,不过在我的工作中发现了这一景象:咱们尝试通过优化处分来实现目标,同时也思考到了数据的可行范畴,但很容易被处分函数所解放,造成适度依赖。 例如,在训练对话模型时,咱们应用了处分函数,激励模型与人类进行对话,同时输入高情感度的文原本获取踊跃的反馈。然而因为数据资源无限,咱们很可能会适度拟合数据和处分,从而导致模型在新数据上体现不佳。 咱们的指标是,在放弃模型适应数据分布(data distribution)的同时最大化处分。咱们应用了最大熵强化学习(maximum entropy RL)算法来找到最优策略,行为是否受到限制并不重要,而是会重复使用处分函数。因而,在应用处分形式来训练智能体时,它可能会体现得过于踊跃、礼貌和愉悦。 智能体的行为多样性建设在输入文本的多样性根底之上。我想晓得他们的后果是否存在相似的问题,即适度训练处分模型实际上会导致收益递加,甚至最终变成负面收益(negative return)。此外,处分模型自身仿佛并不完满,通过验证数据(validation data),你会发现其准确率大概在七成左右。因而在训练时,很可能会产生适度拟合。尚不分明处分模型是否足够全面,以形容优质的输入。 Robin Chauhan:现有的模型并不善于疏忽烦扰项,但这次要是函数迫近问题,而非强化学习的问题。咱们仿佛还没有找到解决烦扰项问题的办法。 Natasha Jaques:可能须要更多基于符号的表示法来实现泛化,以便像卡车和草堆这样的物体可能被地了解。咱们不能仅仅依赖演绎式的深度学习,例如只依赖训练数据集中的卡车示例来辨认卡车,因为这种办法在面对超出训练数据范畴的卡车时将生效。 将语言模型集成到强化学习智能体中很有发展潜力,因为语言是组合性的,或者能够提供组合表示法(compositional representation),从而有助于更好地进行泛化。用语言提醒生成真切图像就证实了组合表示法的潜在劣势。 ...

April 12, 2023 · 2 min · jiezi

关于深度学习:MATH3821-统计模型与计算

MATH3821 Statistical Modelling and ComputingT2 2022Assignment OneIn your report, please include all relevant R commands and outputs di-rectly relevant to your answers. The total marks for this assignment is 52 (5marks will be given to the overall presentation).Consider the Advertising data set, Advertising.csv, This dataset in-cludes advertising costs and sales income. [2 marks] Use an appropriate R function to import Advertising.csvinto R, what are the variables contained in this file?[2 marks] If a regression model can be constructed to model the rela-tionship between the variables, which variable should be the responsevariable? Justify your response with one sentence.[4 marks] Using pairwise plots, do you think a linear model canbe used here? In your answer, include the code and output of thegraphical tools you used, and comment on whether there are apparentrelationships between the predictor and response variables, and whichvariable/s do you expect to be significant as predictor/s.[9 marks] Write down the expression for the linear model, using thenotations Y as the response vector, X as design matrix, and asvector of coefficients, clearly define all variables you use. Write downthe expression for the log likelihood function (assuming normality), andderive the MLE for .[6 marks] Show that the MLE ? is unbiased and derive the varianceof ?.1[13 marks] Write an R function called Leastfit which takes as in-put, a response variable Y and covariates X. The function will com-pute least squares fitting of your response variable of Part (2) and theremaining variables as predictors. This function will outputs a list con-taining three variables, $parameter, the least squares estimate of Part(4); $var the variance of each ? as given in Part (5); $fitted for the fit-ted values and the residuals $res of the regression. Test your functionusing the Advertising data.[4 marks] Produce a diagnostic plot of residuals against fitted values,clearly labelling the x and y axis, your plot should also include a title.Superimpose on this plot a horizontal red line at zero to indicate thelocation of 0 in the residuals.[5 marks] Using R’s lm() function, repeat the regression analysisabove, do you think any of the predictors can be removed? State anyrelevant test used, including the formulation of the hypothesis and thecalculation of the test statistic, and the corresponding conclusions.[2 marks] Plot the set of diagnostic graphs using R’s lm() function.Based on the plots, which linear model assumptions do you think mayhave been violated?

April 12, 2023 · 2 min · jiezi

关于深度学习:三维设计新帮手|Blender怎么入门

随着设计行业的一直倒退,人们也在一直摸索新型的视觉体现,3D的设计风潮在近几年愈发受到大家的欢送,从品牌视觉到UI设计,交互,动效…… 咱们简直能够在所有的设计类型中看到让人眼前一亮的三维设计,这也导致越来越多的设计师想要理解并学习三维,扩大本人的技能树。三维设计是一个十分宏大的畛域,蕴含了很多细分方向,各个业余方向有十分多的软件可供选择,不同软件的倒退速度也突飞猛进。 一、劣势剖析: 1.1 轻便,包容性高 很多初学者在学习三维时,可能只是想用软件做一些简略的轻量级的3D成果,但许多业余的三维软件对电脑设备有肯定的要求,有局部软件并不反对mac零碎,“我的电脑带不动。”“我的设施是苹果电脑。” 这些难题成为了不少立体,Ui设计师学习3d路上的拦路虎。在兼容性以及轻便性上,Blender有它独特的劣势:体积小,仅200m左右,对于硬件要求不高。 软件基于OpenGL的图形开界面开发,可在mac,windows,Linux等支流操作系统上运行Blender。 上述两个劣势对于三维初学者而言十分敌对,学习累赘小,试错成本低,初学者能够先通过应用blender满足本人学习以及工作上的情3d需要,理解大抵的3d设计流程,后续再依据本身理论状况去降级设施。 1.2 软件笼罩全流程制作 Blender里集成了残缺的创作套件,提供了全面的 3D 创作工具,包含建模、UV 映射、贴图、绑定、蒙皮、动画、粒子和其它零碎的物理学模仿、脚本管制、渲染、静止跟踪、合成、前期解决和游戏制作。许多简略的轻3d设计能够间接在Blender中实现,无需跨软件合作,大大降低了学习老本,高效解决设计需要。 1.3 弱小的快捷键操作 置信大多数相熟blender的用户都对Blender的快捷键不生疏,Blender有着大量的快捷键指令,尽管后期在记快捷键的时候比拟苦楚,但当你把握了罕用的快捷键指令后,你会发现自己曾经离不开快捷指令了,纯熟应用快捷键操作会大幅度晋升你的工作效率,在B站上还有热心网友创作了一首《Blender快捷键之歌》。我也收集了局部高频的快捷键指令给到大家: 1.4 沉闷的交换社区 Blender官网领有十分宏大的在线学习交换社区,大家会在下面分享许许多多优质的内容和自制插件,社区气氛乏味,经常能在下面发现许多乏味的制作流程和办法。 1.5 收费开源,拓展性强 收费开源是Blender受到大家追捧的一个重要起因,对于集体创作者和小工作室而言,可无效防止软件的版权问题。 咱们能够在Blender官网,Steam(没错,就是你想的那个)上下载到最新版的Blender。如果你还懂编程,你能够编写插件去满足本人不同的需要。 有许许多多的开发者将本人编写的插件上传到了官方论坛中供大家应用,插件类型涵盖各个领域:建模,动画,渲染,材质,操作……设计师能够依据本人的需要和习惯下载所需插件,优化本人的工作流,晋升效率。同时官网也建设了插件商城,包含了泛滥弱小且残缺的插件工具,让插件开发者和blender官网人员都有能源一起保护软件的生态,发明更多具备创造力的工具。接下来笔者将举荐给大家几款插件,基本上能够涵盖日常的设计流程,帮忙大家晋升本人的设计效率,事倍功半。 二、插件举荐: 2.1 BoxcutterBoxcutter是一款专门针对Blender软件推出的的一款硬外表建模软件。咱们能够应用这款插件对模型进行非破坏性建模,灵便地调节各种参数,在晋升建模效率的同时保障模型品质。并且该插件在Blender中反对上百个布尔运算,给予了创作者更多的设计设想空间。 2.2 UV ToolKitUV Toolkit能够在Blender中对模型UV贴图进行整顿,重排,预览等成果。大部分的模型uv都能够在Blender中应用该插件进行解决,不必再导入到其余uv软件中去解决,大幅晋升工作效率。 2.3 Retopo Flow(Free)Retopo Flow是一款模型拓补插件,能够应用四边面去填充模型实现疾速拓补。当咱们在解决一些面数繁多,或者面数不平均的模型时,能够应用这个插件对模型进行拓补,领有平均布线的模型也不便咱们前期解决uv,削减纹理。 2.4 Mask ToolsMask Tools是一款纹理材质制作插件。通过应用自定义节点去更改纹理或创立纹理,咱们也能够间接在模型上批改纹理,一次性绘制色彩,粗糙度,金属度,法线和高度置换贴图,从而放慢设计师的工作流程。 三、Blender学习频道举荐: 3.1 Youtube官网频道Blender在Youtube的官网账号,其频道涵盖了官网软件的应用教程,小技巧,大神直播分享,Blender制作的电影等……你能够在这个频道理解到最新版blender的性能,也能够从大佬直播中理解到不同我的项目的制作流程和短片解析。 3.2 Blender Guru频道(根底向)适宜初学者的收费教学频道。Blender Guru频道由作者Andrew Price经营,频道内的大部分教程很适宜老手,而且大多数教程还配有图文总结,不便大家总结,回顾。置信很多人都是从他的甜甜圈教程开始着手学习blender的。 而且博主Andrew风趣有趣,在教学的过程中偶然会讲出一些段子,看教程时也不显得干燥~ 3.3 IanHubert(拓展) 我第一次晓得blender这个软件是通过Youtube博主IanHubert,他公布了一个绿幕合成视频,在这支设定为将来世界的短片中,简直所有的场景道具都是由特效合成而来。而演员就对着绿幕,凭设想实现了整段表演,所有的特效合成成果均在Blende中实现。点进作者的主页,你会发现他是一位多年blender用户,分享了许多技巧,最受到大家欢送的系列教程非Lazy Tutorials(懒人教程)莫属 ,这个系列中的每个教程大略在一分钟左右,但却十分实用,充斥了各种骚操作,在感叹作者脑洞大开的同时也能学到许多知识点,强烈建议大家关注。 以上则是本文的全部内容,心愿可能帮忙到大家。 起源:本文来自腾讯ISUX,仅供学习,侵删。

April 12, 2023 · 1 min · jiezi

关于深度学习:NCCL源码解析②Bootstrap网络连接的建立

作者|KIDGINBROOK更新|潘丽晨 上次介绍到rank0的机器生成了ncclUniqueId,并实现了机器的bootstrap网络和通信网络的初始化,这节接着看下所有节点间bootstrap的连贯是如何建设的。 rank0节点执行ncclGetUniqueId生成ncclUniqueId,通过mpi将Id播送到所有节点,而后所有节点都会执行ncclCommInitRank,这里其余节点也会进行初始化bootstrap网络和通信网络的操作,而后会执行到ncclCommInitRankSync。 ncclResult_t ncclCommInitRankSync(ncclComm_t* newcomm, int nranks, ncclUniqueId commId, int myrank, int cudaDev) { ncclResult_t res; CUDACHECK(cudaSetDevice(cudaDev)); NCCLCHECKGOTO(commAlloc(newcomm, nranks, myrank), res, cleanup); NCCLCHECKGOTO(initTransportsRank(*newcomm, &commId), res, cleanup); NCCLCHECKGOTO(devCommSetup(*newcomm), res, cleanup); INFO(NCCL_INIT,"comm %p rank %d nranks %d cudaDev %d busId %x - Init COMPLETE", *newcomm, myrank, nranks, (*newcomm)->cudaDev, (*newcomm)->busId); return ncclSuccess;cleanup: if ((*newcomm) && (*newcomm)->bootstrap) bootstrapAbort((*newcomm)->bootstrap); *newcomm = NULL; return res;}ncclComm_t是指向ncclComm的指针,ncclComm是一个大杂烩,蕴含了通信用到的所有上下文信息,外面的字段等用到的时候再介绍,而后通过commAlloc调配newcom,并且实现初始化,比方以后是哪个卡,对应的pcie busid是什么,而后执行initTransportsRank。 static ncclResult_t initTransportsRank(struct ncclComm* comm, ncclUniqueId* commId) { // We use 3 AllGathers // 1. { peerInfo, comm } // 2. ConnectTransport[nranks], ConnectValue[nranks] // 3. { nThreads, nrings, compCap, prev[MAXCHANNELS], next[MAXCHANNELS] } int rank = comm->rank; int nranks = comm->nRanks; uint64_t commHash = getHash(commId->internal, NCCL_UNIQUE_ID_BYTES); TRACE(NCCL_INIT, "comm %p, commHash %lx, rank %d nranks %d - BEGIN", comm, commHash, rank, nranks); NCCLCHECK(bootstrapInit(commId, rank, nranks, &comm->bootstrap)); // AllGather1 - begin struct { struct ncclPeerInfo peerInfo; struct ncclComm* comm; } *allGather1Data; NCCLCHECK(ncclCalloc(&allGather1Data, nranks)); allGather1Data[rank].comm = comm; struct ncclPeerInfo* myInfo = &allGather1Data[rank].peerInfo; NCCLCHECK(fillInfo(comm, myInfo, commHash)); NCCLCHECK(bootstrapAllGather(comm->bootstrap, allGather1Data, sizeof(*allGather1Data))); NCCLCHECK(ncclCalloc(&comm->peerInfo, nranks+1)); // Extra rank to represent CollNet root for (int i = 0; i < nranks; i++) { memcpy(comm->peerInfo+i, &allGather1Data[i].peerInfo, sizeof(struct ncclPeerInfo)); if ((i != rank) && (comm->peerInfo[i].hostHash == myInfo->hostHash) && (comm->peerInfo[i].busId == myInfo->busId)) { WARN("Duplicate GPU detected : rank %d and rank %d both on CUDA device %x", rank, i, myInfo->busId); return ncclInvalidUsage; } }看下bootstrapInit: ...

April 10, 2023 · 5 min · jiezi

关于深度学习:大型语言模型的推理演算

作者|kipply翻译|杨婷、徐佳渝、贾川 本文具体论述了大型语言模型推理性能的几个基本原理,不含任何试验数据或简单的数学公式,旨在加深读者对相干原理的了解。此外,作者还提出了一种极其简略的推理时延模型,该模型与实证后果拟合度高,可更好地预测和解释Transformer模型的推理过程。  为了更好地浏览本文,读者需理解一些Transformer模型的相干先验常识,比方《图解Transformer》的大部分内容。另外,理解与本文相干的参数计数文章也能更好地帮忙读者了解本文内容。本文次要包含以下内容:  kv 缓存 (kv cache) 解释了在推理过程中缓存自注意力向量所带来的性能优化成果,以及可能导致的衡量(tradeoff)以及容量老本问题。容量(capacity)思考了kv缓存的存储老本以及模型权重的存储老本之间的分割,并解释了容量大小对模型性能的影响。模型并行可帮忙咱们了解张量并行,以明确通信老本。时延计算须要从其余概念中取得了解,并创立用于确定推理速度底线(floorline)的方程。批大小(batch size)对性能的影响以及最优批大小为多少。通过transformer blocks执行flops(每秒浮点运算次数)计数操作,能够辨认对flops速度有实质性奉献的操作。两头内存老本涵盖了激活(即激活函数的输入后果)占用额定内存,以及一些实在基准测试中的内存带宽老本。比照实在基准测试是指将计算出的内容与英伟达 FasterTransformer基准测试后果进行比照,并确定其中的差别。(本文经受权后由OneFlow编译公布,译文转载请分割OneFlow取得受权。原文:https://kipp.ly/blog/transformer-inference-arithmetic/) 1kv 缓存采样时,Transformer模型会以给定的prompt/context作为初始输出进行推理(能够并行处理),随后逐个生成额定的token来持续欠缺生成的序列(体现了模型的自回归性质)。在采样过程中,Transformer会执行自注意力操作,为此须要给以后序列中的每个我的项目(无论是prompt/context还是生成的token)提取键值(kv)向量。这些向量存储在一个矩阵中,通常被称为kv缓存或者past缓存(开源GPT-2的实现称其为past缓存)。past缓存通常示意为:[batch, 2, num_heads, seq_len, features]。  kv缓存是为了防止每次采样token时从新计算键值向量。利用事后计算好的k值和v值,能够节俭大量计算工夫,只管这会占用肯定的存储空间。每个token所存储的字节数为:  第一个因子2示意k和v这两个向量。在每一层中咱们都要存储这些k,v向量,每个值都为一个矩阵。而后再乘以2,以计算每个向量所需的字节数(在本文中,咱们假如采纳16位格局)。  咱们乘以token嵌入(token embeddings)失去的权重为,其中每个token嵌入为。这样,咱们就能够算出所有层的k和v需进行的浮点运算次数为:  将乘以须要进行次浮点运算。另一个2示意咱们须要反复两次这样的操作,一次用于计算k和一次用于计算v,而后再反复所有层数。 矩阵乘法(matmul)中的浮点运算次数为多少?矩阵-向量(matrix-vector)乘法的计算公式是 ,其中 ,。对于矩阵-矩阵(matrix-matrix)乘法,计算公式是  ,其中,。因子非常重要,因为它反映了矩阵乘法中由乘法和加法组成的组合形式,即“乘法(1)-加法(2) 操作组合”。更多内容见讲义(lecture notes)。 这意味着对于一个520亿参数的模型来说 (以Anthropic中的模型为例,,),其浮点运算次数为:  假如有一个A100 GPU,其每秒可执行的浮点运算次数为,其内存带宽可达字节/秒。以下数字仅波及kv权重及计算的数值:  Flops vs 内存有界性(Boundedness)英伟达应用了数学带宽这个术语,我感觉这个术语真的很可恶。从技术上讲,这种形容存在于每个内核中,但能够形象为操作组。 Flops vs 内存有界性是Transformer推理和深度学习优化的常见问题。为了实现所需计算,通常须要加载权重,加载过程会占用内存带宽。假如通过加载权重曾经失去了很好的优化,那么咱们能够在加载权重的同时开始计算。在这种状况下,flop bound意味着一段时间内存中没有任何数据传输;memory bound则意味着没有进行任何计算操作。英伟达应用数学带宽(math bandwidth)来形容该状况,我感觉相当有意思。从技术上讲,这种划分通常是指每个内核(kernel)中的计算量受限,但也能够指这些操作组的计算量受限,将每一组视为形象意义上的单元。 当初模型架构不再重要了——在给定硬件规格的状况下,咱们失去了一个显著的比率208。这意味着,咱们计算一个token的kv所需的工夫,与解决208个token的工夫雷同。若低于该值,会呈现内存带宽限度,若高于该值,会呈现flops限度。如果咱们应用残余的权重来实现残缺的前向传递(即运行残余的transformer),那么后果依然是208(分子和分母各乘以6)。这一点咱们会在前面的章节具体介绍。 下图的交点是208,不过实际上内存线(memory line)会有一些歪斜,这是因为两头计算(intermediate calculation)存在内存老本(上一节探讨过)。  对于领有520亿参数的模型来说,一次残缺的前向传递须要毫秒,这是解决208个token所需的工夫(实际上咱们会应用四个GPU进行并行处理,因而理论须要的工夫约为17毫秒,后续章节将做具体介绍)。如果语言环境存在416个token(即双倍token),那么解决工夫将翻倍,而解决312个token所需的工夫是解决208个token的1.5倍。   计算kv缓存的token时,一个token所需的计算成本为模型中传递该token计算成本的1/6。总的来说,这些前向传递(获取logits、嵌入和训练时咱们深有体会)十分便宜,因为能够进行并行计算。相比之下,采样的老本要高得多,因为它须要强制读取每个token的所有权重,进行自回归预测。  但这并不意味着工夫节俭了1/6!假如呈现了flops bound,在每个采样步骤中,咱们能够少进行次浮点运算,而解码步骤(step)须要进行次浮点运算。 因而,在每个步骤中,咱们节俭的每秒浮点运算次数是序列中每个token每秒浮点运算次数的1/6(很大!),而且该数值会随着采样token数量的减少而减少。在没有kv缓存的状况下,随着token数量的减少,采样的工夫复杂度(time complexity)将以平方级减少。  思考到存储缓存相干的开销和衡量(tradeoffs),以上说法并不全面。如果咱们进行小批量设置,可能会呈现内存带宽受限,而非flops bound。在这种状况下,咱们可能不会应用过来的缓存,而是偏向于从新计算,这会耗费flops(因为咱们曾经领取了采样的内存老本)。  2容量咱们对于GPU中存储的kv缓存和权重有了肯定意识,并且理解到GPU容量的确对Transformer模型的推理性能有着重要影响,也就有了充沛的理由对其进行评估。   一般来说,Nvidia A100 GPU是用于推理的最佳GPU,其容量规范为40GB。尽管有一些GPU的容量高达80GB,并且具备更高的内存带宽(为 2e12 而非 1.5e12),但它们尚未被任何大型云服务提供商采纳,因而,于我而言它们不足理论价值。  将给定的参数计数(parameter count)乘以2,咱们就能够获取相应字节数,进而算出领有520亿参数的模型的权重大小。 不过这显然不能在一个GPU上实现,咱们至多须要三个GPU能力加载所有权重(稍后将探讨如何进行分区(sharding))。但这样就只剩下可用kv缓存了,这足够吗?让咱们回到kv缓存内存中每个token的方程式,再次应用520亿参数大小的模型运行。  应用这种GPU设置,咱们能够将个token存储在kv缓存中。或者咱们能够将batch size设置为4,其中每个申请最多蕴含2048个token(token越少所需batch size越大)。  ...

April 6, 2023 · 2 min · jiezi

关于深度学习:深度学习多层感知机

多层感知机(MLP)本文章基于3Blue1Brown视频并且联合本人学习总结的笔记视频链接: https://www.youtube.com/watch?v=aircAruvnKk本文只能帮你疾速建设对常识了解,如果想 细入理解常识——本人查阅文献以及书籍本人也在学习深度学习(花书),会不断更新此文章,尽可能的让这篇文章完满 能够拜访我的集体博客:https://shangxiaaabb.github.io/ 引入以手写字体辨认为例,咱们人类能够很容易对一个手写字体进行辨认比方下图: 咱们能够非常自信的说:这个数字是3!然而对于计算机并非如此!计算机并没有如同人类一样的视觉细胞,那么怎么让计算机意识这数字呢?咱们在K近邻算法中有一个手写字体辨认试验,咱们是间接将数字进行2值化 将数字转化为0-1,如下图:而后将32x32的图像间接转化为1x1024,而后利用K近邻算法进行判断。这无妨是一个很好的方法,另外一种更加间接的方法就是将数字转化为不同的灰度值矩阵,如下:咱们后续介绍多层感知机也是灰度值变换后图像进行判断。 什么是多层感知机在介绍多层感知机前(不解释定义之类的,都能够自行百度),咱们先理解单层神经网络的根本构造,单层神经网络个别由:输出层、输入层形成。如下:先临时不解释各个层的作用,咱们持续介绍多层感知机:比照两图最显著的区别就是多层感知机相较于单层神经网络额定的多了一个暗藏层。是不是该解释一下1每一层的作用了呢?不!(间接对概念下定义是很难了解的)咱们借助咱们引入的例子来对没一层进行解释。咱们设计一个多层感知机模型如下(为什么这样设计后续解释,从左至右:输出层(784)-->暗藏层(n)-->暗藏层(n)-->输入层(10)): 括号外面数字代表层的数目引入中咱们曾经提到手写数字曾经被咱们转化为一个28x28的灰度值矩阵,上面开始解释每一层都在干些什么事件!输出层咱们晓得数字曾经转化为了一个28x28的灰度值矩阵,咱们相似K近邻算法将其再次转为为1x784的矩阵,咱们将矩阵中的每一个数字(灰度值)作为咱们的神经元,也就是说咱们领有784个神经元(也就解释了为什么要设计输出层的数目为784)。 输入层咱们晓得阿拉伯数字只有0-9(别抬杠说10,难道不是由0-1形成),那么是不是咱们数据在通过解决之后返回的后果也应该是0-9,这0-9也就形成了咱们的输入层(也就解释了输入层为什么是10) 暗藏层至于暗藏层为什么设计两层,而且每层的数目是n。其实很容易解释,首先你无妨在纸上写任意几个数字(如果你写的是数字9),手写数字9是不是大体上能够分为两局部:9的头部的圆、9的尾部的竖线。顺次类推任意数字咱们都能够才分成几个局部组成(只管由类似然而不影响咱们对数字辨认)。好啦假如咱们曾经对数字划分结束,曾经划分若干组成成分——咱们也就形成了咱们第二层暗藏层,顺次类推是不是还能够持续细分呢?9的头部的圆(o)是不是能够细分其余款式呢?——第一层暗藏层。 解释完各个层都在干嘛,你也没解释咱们怎么辨认数字呀!别急!接下来就解释!咱们假如咱们在第二层暗藏层失去了一个圈和一个竖线通过组合是不是能够失去数字9?为什么不是数字6呢?咱们假如第二次暗藏层的数目是$a_1.....a_n(每一个a_i代表不同数字组成部分)$,仔细的你必定曾经发现了不同层之间有着许多线进行连贯,他们是干嘛的呢?权重,正是因为这些权重能力保障咱们能够辨认数字是9而不是6。以此类推第一场暗藏层也如此!以上都是一些口语化解释并没有波及过多的专业名词,上面开始解释一些实践上的内容! 激活函数激活函数判断来确定神经元是否应该被激活,常见三类激活函数如下: sigmoid函数$$sigmoid(x)=\frac{1}{1+exp(-z)}$$ $$z=w_1a_1......w_na_n+b_0$$ $b_0$代表偏置,用于判断激活函数为多少状况下神经元是否被激活函数图像如下: Relu函数$$Relu(z)=max(x,0)$$ 函数图像如下: 所有小于0的数字都解决为0 tanh函数$$tanh(z)=\frac{1+exp(-2z)}{1+exp(-2z)}$$ 函数图像如下:

April 5, 2023 · 1 min · jiezi

关于深度学习:8个可以免费下载3D模型的网站快收藏起来吧

收费下载3D模型的网站不少,然而收费的货色很难达到十分高的品质,一些销售3D模型的网站也有许多收费的3D模型。以下举荐几个比拟罕用的,大家能够依据本人的状况进行抉择(有些是收费的,有些须要付费)。 同时揭示大家,在下载和应用任何网站上的收费或付费3D模型之前请仔细阅读该网站的应用条款。⊙ http://sketchfab.comSketchfab的模型品质相对来说还是比拟不错的,能够进行一些关键词的搜寻,而后勾选能够下载的模型,就能够看到收费供咱们去下载的模型素材,当然你首先是须要注册一个账号的。 ⊙ http://www.cgtrader.comcgtrader整个网站的模型素材品质能够说是相当的高了,即便是收费的模型品质也和免费的模型并驾齐驱,分类也很分明,在搜寻的时候只须要点开收费的选项就能够看到收费的模型。这个强力举荐! ⊙ http://TurboSquid.comTurbosquid号称专业人士的3D模型。素材十分全面,只须要在搜寻筛选里勾选上收费,就能够失去收费下载点的模型,当然你也能够抉择购买付费的模型,整个网站模型蕴含3Dmax、玛雅、C4D等软件格局的模型。还有OBJ格局模型 。 ⊙ http://Threedscans.comthreedscans的模型很多是对雕塑作品进行三维扫描,整个网站的模型品质还是很高的,简直还原了实物的所有细节,能够收费下载,每种有余的就是凋谢的素材内容无限。 网站点开任意一个模型,都能够360°无死角的观看整个模型的细节,精密度很高,还有每个模型都会有一些基于模型进行创作的作品。⊙ http://c4dps.comhttp://c4dps.com是87time整顿公布的免费资源网站,网站资源分类十分清晰,能够进行关键词的搜寻。整个网站的模型特点在于不会让你为了下载一个模型而下载一堆货色,全副是C4D整顿过的,C4D格局。 http://c4dps.com除了模型还有很多贴图预设能够进行下载,都是收费的,还不须要注册登录。置信大家也都看过87time的教程,感兴趣的能够关注他们的官网http://87time.com观看更多的收费教程。⊙ http://www.yunmoxing.com这个网站有各行各业的模型素材,比拟全面,而且还是中文的,能够进行关键词搜寻。你也能够把本人的模型上传进行分享或者销售。美中不足的是整个网站的模型素材品质参差不齐,品质更高一些的模型可能还须要付费。 ⊙ http://3dsky.org收费的模型还是相当多的,美中不足的是每天只能下载3个,格局蕴含了格局:.obj、.fbx、.max,能够依据本人的需要进行下载。 ⊙ http://3dexport.com3 Dexport是一个做模型销售的网站,能够上传销售本人的3D模型,3D打印模型和纹理。网站2004年2月上线的,网站介绍说3 Dexport世界上最大的高质量3D模型素材销售商之一。网站语言也能够设match置中文,这个还是很不错的。当然收费模型也是少不了的。

April 4, 2023 · 1 min · jiezi

关于深度学习:三点几嚟饮茶先啦PaddleSpeech发布全流程粤语语音合成

大家好!明天带来的是基于PaddleSpeech的全流程粤语语音合成技术的分享~ PaddleSpeech 是飞桨开源语音模型库,其提供了一套残缺的语音辨认、语音合成、声音分类和谈话人辨认等多个工作的解决方案。近日,PaddleSpeech 迎来了重要更新——r1.4.0版本。在这个版本中,PaddleSpeech 带来了中文 wav2vec2.0 fine-tune 流程、降级的中英文语音辨认以及全流程粤语语音合成等重要更新。接下来,咱们将具体介绍这些更新内容以及亮点。 中文 wav2vec2.0 fine-tune在r1.4.0版本中,咱们实现了中文 wav2vec2.0 fine-tune 流程。wav2vec2.0 是一种基于自监督学习的语音特征提取办法,通过训练未标注的语音数据,学习到音频信号的有用示意。 wav2vec2.0 应用一个基于卷积神经网络(CNN)的编码器来提取语音特色,而后应用一个 Transformer 架构的上下文网络来捕获特色之间的时序关系。在 fine-tune 阶段,通过增加一个线性分类层来适应中文语音辨认工作。 wav2vec2.0 的次要组成部分前解决原始音频数据首先通过预处理,包含采样率转换、声道数调整等,以满足模型输出的要求。 特征提取器对预处理后的音频数据进行特征提取,将其转换为适宜模型输出的模式。wav2vec2.0 模型应用了一个卷积神经网络(CNN)作为特征提取器,将间断的音频数据转换为一系列的特征向量。 上下文网络特征向量通过上下文网络进行解决,捕捉不同工夫步长之间的关联信息,上下文网络应用的是 Transformer 构造。 自监督学习wav2vec2.0 采纳自监督学习的办法进行训练,它应用了一个“掩码”策略,在输出数据中随机抉择一些工夫步长并将其置为均匀分布的随机 embedding 向量,而后训练模型去预测被掩码量化后的特色。这种办法容许模型在没有文本标注的状况下学习音频数据的外在构造。 线性分类器在自监督学习的根底上,为了实现音频到文本的转换,模型在最初一层增加了一个线性分类器。这个分类器将上下文网络输入的特征向量映射到对应的 token。 通过这一流程,PaddleSpeech 可能在无需大量标注数据的状况下,提供高效精确的中文语音辨认模型。在 PaddleSpeech 给出的 fine-tune 流程示例中,预训练模型基于 WenetSpeech Dataset ,应用 aishell1 数据集进行微调,在两块32G V100 上训练80个 Epoch ,batch size 设置为5,Encoder 应用 wav2vec2.0, Decoder 阶段应用 CTC ,解码阶段应用 Greedy search 。最终在 aishell1 测试数据集上字错误率(CER)为0.051,折算成辨认正确率94.9%。 开发者们能够通过 wav2vec2.0 的中文 fine-tuning 流程,在本人的数据集上进行微调,以便取得在特定场景中体现更优良的模型。 我的项目体验传送门 ...

April 3, 2023 · 1 min · jiezi

关于深度学习:zbrush常用快捷键

zbrush是一个数字雕刻和绘画软件,zbrush可能雕刻高达10亿多边形的模型;它是依照世界领先的特效工作室和全世界范畴内的游戏设计者的须要,以一种精细的联合形式开发胜利的,它提供了优良的性能和特色,能够加强创造力。 明天跟大家分享对于zbrush的罕用快捷键! 罕用快捷键 挪动----------------------------------Alt+鼠标右键旋转视图------------------------------鼠标左键或者右键按住不放缩放----------------------------------Ctrl+鼠标右键、alt+鼠标点击空白再松开alt复制模型------------------------------Ctrl+点击鼠标左键拖动轴向箭头最近的正交视图------------------------shift革除多余模型--------------------------Ctrl+N(没进入编辑模式会始终创立,此时能够用快捷键全副革除掉)编辑模式------------------------------T绘制模式------------------------------Q模型自身的挪动旋转缩放----------------W、E、R整数角度旋转--------------------------长按shift细分网格------------------------------Ctrl+D暗藏模型部位--------------------------Ctrl+shift+鼠标框选暗藏后全副显示--------------------- -- Ctrl+shift+点击画布空白处剔除---------------------------------- Ctrl+shift+Alt主动分组(能够不便抉择暗藏和显示的模型)-----Ctrl+W多物体中疾速抉择其中物体--------------alt+鼠标左键点击抉择的物体理论大小-------------------------------050%大小-------------------------------Ctrl+0渲染视图------------------------------shift+R透视图--------------------------------P网格线--------------------------------shift+P对称----------------------------------X后退----------------------------------Ctrl+shift+z回退----------------------------------Ctrl+z回到中心点----------------------------F线框显示------------------------------shift+F爆炸图--------------------------------shift+X汲取色彩------------------------------C变换色彩------------------------------V交替色彩------------------------------Alt灯箱----------------------------------,(逗号)疾速保留------------------------------9聚光灯的编辑模式----------------------Z退出聚光灯----------------------------shift+Z坐标开锁------------------------------Alt色彩强度调整--------------------------I笔刷强度调整--------------------------U新建文件夹----------------------------Ctrl+F子工具所列图---------------------------N子工具中多个模型抉择-------------------Alt 或者 N显示小工具窗口-------------------------空格键插入和追加的区别:插入是在以后抉择模型列表上面插入追加是永远在列表上面体现 笔刷快捷键笔刷------------------------------------B笔刷大小调整----------------------------S凹进去----------------------------------ALT遮罩笔刷--------------------------------Ctrl遮罩反选--------------------------------Ctrl+鼠标空白处点击革除遮罩--------------------------------Ctrl+鼠标空白处框一下遮罩含糊(边缘羽化)--------------------Ctrl+鼠标点击模型遮罩锐化(边缘变硬)--------------------Ctrl+Alt+鼠标点击模型设置笔刷快捷键--------------------------Ctrl+alt+鼠标点击+数字键+确定平滑笔刷--------------------------------shift插入几何体笔刷--------------------------B+I+T雕刻阶段小技巧:

March 31, 2023 · 1 min · jiezi

关于深度学习:ChatGPT们的淘金时代

作者|Pietro Casella、Patrik Liu Tran翻译|贾川、徐佳渝、杨婷 语言(即读写能力)是人类最重要的创造,也是人类与其它物种的最大区别。语言使咱们把握了形象推理,倒退出了简单思维,学会了与别人沟通交流。能够说,没有语言就不会有现代文明。 因而,将来几年大型语言模型(LLM)将极大地影响生成式AI的倒退,ChatGPT的迅速遍及就是很好的例证。此外,LLM还在多种场景失去利用,比方内容创立、代码生成、药物开发、翻译、搜寻以及工作场合实用程序(例如会议转录和摘要)。  LLM利用实例  总之,生成式AI的最新进展标记着AI未然迈进新时代。AI现在不再只是研究课题,而是成为了帮忙人们解决理论问题的实用工具,在各行各业发光发热。因而,企业必须要器重AI的影响力。 面对AI的倒退,企业要立即行动起来,维持本身竞争力。长期来看,未能与AI交融的公司将在这场竞争浪潮中日益落后,并逐步沦亡。对于企业来说,最要害的是要把控好AI的劣势和老本,采取必要措施将AI纳入倒退布局。将来几年将会是商业倒退的黄金期间,新兴企业已如雨后春笋般呈现。  本文次要关注LLM,包含LLM和模型相干技术概述,以及它们在实践中的利用。心愿本文能够帮忙从业者理解如何在业务中利用LLM,使行业潜在投资者全面理解这一畛域,作出更好的投资决定。尽管咱们提供的框架(例如各类AI公司的分类)实用于所有生成式AI,但这里还是以LLM示例为主。 (本文经受权后由OneFlow编译,译文转载请分割OneFlow取得受权。原文:https://aigeneration.substack.com/p/ais-next-frontier-buildin...) 1从Transformer到ChatGPTAI畛域常有开创性论文发表,这些论文影响着行业的将来倒退方向。LLM畛域中,“Attention Is All You Need”就是这样一篇论文。 这篇文章由谷歌团队于2017年发表,在文中,他们提出了一种名为Transformer架构,简略来说,与过后的SOTA代替计划相比,Transformer架构具备高度并行性和计算效率,同时具备超高性能。 这意味着,采纳Transformer架构的模型训练老本更低、速度更快,生成的模型性能更好。在不影响性能的状况下,这种低成本、高效的组合非常重要,它可能让咱们利用更多的数据,训练更大的模型。  受Transformer启发,在Transformer架构的根底上,各类出名LLM层出不穷,例如:生成式预训练Transformer(GPT)模型、BERT以及XLNet。  无关GPT(1.0)和BERT的论文最早能够追溯到2018年。次年(即2019年)发表了第一篇对于XLNet的论文。尽管如此,直到2022年底,OpenAI推出ChatGPT后,LLM才进入公众视线,开始风靡于钻研界之外。 ChatGPT推出后,不到一周的工夫里,就播种了超百万用户。这种遍及速度非常常见,简直超过了以前所有的科技产品。台上十分钟,台下十年功,所有的突破性成就必然来自于披星戴月的致力。基于GPT-3.5的ChatGPT是LLM畛域多年以来的最重要的成就。实际上,ChatGPT的根底模型并不是最好的LLM,但却是目前最受欢迎的模型。  工夫会证实所有。在咱们看来,ChatGPT最重要的是作为PoC(为观点提供证据),向世界展现LLM的能力。只管ChatGPT公布初期非常火爆,但咱们不确定它是否成为支流LLM之一,在理论用例中取得广泛应用。起因如下: 2根底模型vs专用模型 根底大型语言模型是在大量公开文本、数据(例如,维基百科、新闻文章、Twitter、在线论坛等)上进行训练的。模型训练数据话题宽泛,内容繁冗,并不针对特定畛域和工作,这类模型包含:GPT-3,Jurassic-1,Gopher和MT-NLG。 目前,尽管建设在根底AI模型(如ChatGPT)之上的应用程序十分风行,但咱们预计,专用于特定畛域或工作的模型能力施展出LLM的真正价值。因为与雷同模型大小的根底模型相比,在业余畛域里,专用模型的体现通常来说更好。这意味着,咱们须要用更大的根底模型(这也意味着更高的推理老本和更大的内存占用)才有可能在业余畛域实现与业余模型雷同的性能。  专用模型比根底模型体现更好的起因之一与模型对齐无关,即LLM的输入与模型用户的指标和趣味绝对应的水平。更好的模型对齐意味着答案是正确且相干的,也就是说正确答复了模型申请的问题。因为专用模型仅关注特定畛域或工作,因而与根底模型相比,专用畛域模型的对齐水平通常更高。  咱们有多种形式实现模型的专用化,其中之一就是利用专用畛域或工作的数据来训练根底模型。比方,一个根底模型能够很好地答复银行相干的个别问题,然而,如果你想要打造一个专门针对银行的聊天机器人,那么这个通用模型的性能程度就不太够用了。这时,咱们就能够利用银行业相干的数据集来训练这个模型,实现模型专业化。反过来,如果有一家银行想要在客服服务中利用聊天机器人,从而实现简略工作的自动化,此时银行可能会在理论客户服务对话的专门数据上进一步训练这个业余模型。像这样训练当前,LLM就能学会特定银行依照肯定政策的行事形式,毕竟不同银行可能有不同的政策和指导方针。  因为专用模型针对的是特定工作,不波及其它不相干的畛域和工作,所以说,不须要用到很大的根底模型来进行进一步训练。应用更小的模型意味着更低的推理老本和更小的内存占用,也就是说,比最大的可用模型小得多的根底模型可能会成为专用根底模型的首选。 3LLM如何改良?为了更好地理解LLM的性能和局限性,咱们首先要理解该如何改良它们。LLM的改良有三个次要驱动因素,别离是:体系结构改良、更大的模型、更多的训练数据。接下来咱们将对这三方面进行逐个介绍。 架构改良是要害,但很难获得冲破  架构改良(例如2017年的Transformers架构)能够在不减少模型复杂度和训练数据量的状况下晋升LLM性能。目前正在构建的少数SOTA性能LLM依然是基于Transformer的网络架构(与2017年推出的架构十分类似)。只管它具备已知的局限性(例如自留神导致的二次方工夫和内存复杂性),但目前还没有广受认可的架构更新。话虽如此,人们始终在一直摸索,试图改良架构,并为此推出了所谓的高效Transformers来打消已知局限。  对现有SOTA架构的渐进式改良(如高效Transformers)将逐年冲破模型性能界线。此外,每隔一段时间,行业就会迎来突破性的架构改良(例如原始Transformer架构),这些改良代表着模型性能的跨越式晋升。  与减少模型大小和训练数据量相比,改良模型架构较为艰难。模型架构改良遵循传统研发模式,须要大胆翻新,且无奈保障后果,因而,LLM的此类性能改良最为辣手,同时也是架构渐进式晋升与冲破向社区公布和分享的规范。除了率先应用先进模型,这意味着这类晋升不能作为长期劣势去与其它构建LLM的公司或对手竞争。例如,OpenAI的LLM是以Google Brain 2017年创造并公开的Transformer为根底。  LLM改良经典做法:扩充模型规模  目前,为了进步LLM性能,人们将大部分精力放在了减少模型大小下面。2020年,OpenAI发表了一篇论文,提出了在减少模型尺寸与进步模型性能之间的扩大定律,论文的论断是:人们应该将大部分估算用于扩充模型规模。这篇论文间接推动了增大模型规模的浪潮。下图出自论文Machine Learning Model Sizes and the Parameter Gap,图中显示近年来语言模型大小呈显著增长趋势。  2019年之前,大多数LLM的参数都在数亿级。2019年,OpenAI公布了有15亿参数的 GPT-2。2020年,谷歌和微软公布了T5和Turing NLG,别离蕴含110亿和170亿个参数。2020年年中,OpenAI公布了1750亿个参数的GPT-3。从那时起,大型模型开始接连呈现,例如AI21的Jurassic-1(1780亿个参数)、DeepMind的Gopher(2800亿个参数)、Nvidia和微软的MT-NLG(5300亿个参数)以及北京智源研究院的WuDao 2.0(1.75万亿个参数)。  LLM之所以能够通过减少模型规模来晋升性能,是因为这样做能晋升模型对简单事实的建模能力。因为Transformer架构速度快、性价比高,始终是训练大型模型的首选。然而,在同等条件下,更大的模型也意味着更高的训练和推理老本,同时也意味着更大的内存占用,也就是说,模型须要部署在更大的硬件上。因而,在估算和内存无限的状况下,自觉扩充模型规模并不是晋升模型性能的最佳抉择。  大规模训练数据集的比赛  始终以来,人们都低估了训练数据在模型性能晋升方面的重要性,这种重要性包含品质和数量两方面。2022年DeepMind团队发表了一篇论文(https://arxiv.org/pdf/2203.15556.pdf),文中比照了模型大小和训练数据,最终论断是:少数语言模型显著训练有余。也就是说,在不减少模型大小的状况下,在更大的数据集上训练模型将受益匪浅。  文中,DeepMind团队训练了一个绝对较小的LLM,名为Chinchilla,这个模型只有700亿个参数,但却有1.4万亿个训练token。经过训练,Chinchilla模型的性能超过了诸如GPT3、Gopher、Jurassic-1和MT-NLG等更大的语言模型,这些语言模型的参数都在1750亿-5300亿之间,但训练token却在2700亿-3000亿之间(请参见下表)。这表明为了晋升模型性能,人们必将打响训练数据集之战。  此外,咱们还能够通过强化学习来利用更多数据,晋升LLM的性能。2017年,OpenAI公布了一类新的强化学习算法:近端策略优化(PPO,https://arxiv.org/pdf/1707.06347.pdf),是目前行业里的SOTA。在实践中,近端策略优化操作更为简略,并且它的体现可能达到甚至超过其它代替办法。  ChatGPT背地的LLM曾经利用人类反馈的强化学习(RLHF)实现了微调,步骤如下:第一步:通过监督学习,用人类对不同提醒的“现实”答复数据微调LLM。第二步:LLM 为每个提醒提供多个答案,而后由人工对这些答案进行排名(该排名用于训练处分模型)。第三步:用近端策略优化模型来优化LLM的处分模型。强化学习能够疏导模型提供更加正确、公正、无益的答案。总之,当初的LLM更加弱小。  事实上,这也是OpenAI将ChatGPT公布为 “收费试用”的次要起因之一(其实你曾经通过提供数据的形式付费了)。ChatGPT生成的每个答复旁边都有一个“赞(thumbs up)”和一个“踩(thumbs down)”按钮,用户能够通过这两个按钮来评估模型生成的答复。无论是“赞”还是“踩”都会呈现一个对话框,用户能够将现实答案输入框中,而这些答案正是强化学习第一步须要的数据。 ChatGPT的反馈循环按钮  实践上讲,只有有短缺的资金和相干人才,任何公司都能打造出优质LLM。但咱们预计,科技巨头最有可能打造出性能最佳的LLM,因为这些公司能够取得和治理训练数据,特地是强化学习局部,以进一步改良和微调他们的模型。公司之间的训练数据有很大差别。谷歌、微软、Meta、亚马逊、阿里巴巴和腾讯等公司为数十亿用户提供了不同的服务,所以它们能够找到创新性的形式去收集相干数据,用以训练LLM。  相比减少模型规模,用更多训练数据来晋升模型性能不会减少推理老本,模型运行时也不会导致更大的内存占用。但这也面临着其它挑战,其中最大的挑战是,咱们难以确保这些领有数十亿、数万亿训练token的数据集良性运行,从而导致模型产生谬误、偏见、无害的内容。强化学习兴许在肯定水平上能够对消这些不良内容,但难以关照到各个领域的LLM。 4不同类型的AI公司咱们看到人工智能对这些公司的产品和差异化的重要性,以及他们次要经营的人工智能技术堆栈的哪一部分,可能会有很大差别。  在最近的生成式AI浪潮下,许多公司再次将本人标榜为“AI公司”。AI对这些公司的产品和差异化的重要性以及他们所研发的AI技术堆栈可能有着实质上的区别。基于此,咱们将这些公司分为以下五类:AI内核(AI Core)、AI赋能(AI Enabler)、AI原生(AI Native)、AI特色(AI Featured)和 AI驱动(AI Powered)。  ...

March 31, 2023 · 1 min · jiezi

关于深度学习:用-Dropout-正则化对抗-过拟合

动动发财的小手,点个赞吧! 过拟合是咱们大多数人在训练和应用机器学习模型时曾经或最终会遇到的常见挑战。自机器学习诞生以来,钻研人员始终在致力反抗过拟合。他们提出的一种技术是 dropout 正则化,其中模型中的神经元被随机移除。在本文中,咱们将探讨 dropout 正则化的工作原理、如何在您本人的模型中施行它,以及与其余办法相比它的优缺点。 1. 简介1.1. 什么是过拟合过拟合是指模型在其训练数据上适度训练,导致它在新数据上体现不佳。从实质上讲,在模型力求尽可能精确的过程中,它过分关注训练数据集中的细节和噪声。这些属性通常不存在于真实世界的数据中,因而模型往往体现不佳。当模型的参数绝对于数据量而言太多时,就会产生过拟合。这可能导致模型适度关注与模型必须开发的个别模式无关的较小细节。例如,假如训练了一个简单模型(许多参数)来辨认图片中是否有马。在这种状况下,它可能会开始关注天空或环境的细节,而不是马自身。这可能产生在: 该模型太简单(具备太多参数)而不利于其本身。模型训练工夫过长。训练模型的数据集太小。该模型在雷同的数据上进行训练和测试。训练模型的数据集具备反复的特色,使其容易过拟合。1.2. 重要性过拟合不仅仅是一个简略的懊恼——它会毁坏整个模型。它给人一种模型体现良好的错觉,即便它无奈对所提供的数据进行适当的概括。 过拟合会产生极其重大的结果,尤其是在人工智能越来越遍及的医疗保健等畛域。因为过拟合而未通过适当训练或测试的 AI 可能导致错误诊断。 2. 什么是DropoutDropout 是一种正则化技术现实状况下,反抗过拟合的最佳办法是在同一数据集上训练大量不同架构的模型,而后对它们的输入进行均匀。这种办法的问题在于它十分消耗资源和工夫。尽管绝对较小的模型可能负担得起,但可能须要大量工夫来训练的大型模型很容易压垮任何人的资源。 Dropout 的工作原理是从输出层或暗藏层中“抛弃”一个神经元。多个神经元从网络中移除,这意味着它们实际上不存在——它们的传入和传出连贯也被毁坏。这人为地创立了许多更小、更不简单的网络。这迫使模型不再齐全依赖于一个神经元,这意味着它必须使其办法多样化并开发多种办法来实现雷同的后果。例如,回到马的例子,如果一个神经元次要负责马的树局部,它的被抛弃将迫使模型更多地关注图像的其余特色。 Dropout 也能够间接利用于输出神经元,这意味着整个特色都从模型中隐没了。 将 Dropout 利用于神经网络通过在每一层(包含输出层)中随机抛弃神经元,将 Dropout 利用于神经网络。预约义的抛弃率决定了每个神经元被抛弃的机会。例如,dropout rate 为 0.25 意味着神经元有 25% 的几率被抛弃。在模型训练期间的每个期间都会利用 Dropout。 3. 利用3.1. 数据集让咱们从一个可能容易过拟合的数据集开始: # Columns: has tail, has face, has green grass, tree in background, has blue sky, 3 columns of noise | is a horse image (1) or not (0)survey = np.array([ [1, 1, 1, 1, 1, 1], # tail, face, green grass, tree, blue sky | is a horse image [1, 1, 1, 1, 1, 1], # tail, face, green grass, tree blue sky | is a horse image [0, 0, 0, 0, 0, 0], # no tail, no face, no green grass, no tree, no blue sky | is not a horse image [0, 0, 0, 0, 0, 0], # no tail, no face, no green grass, no tree, no blue sky | is not a horse image])此数据与咱们的马及其环境示例相干。咱们将图像的个性形象为一种易于了解的简略格局。能够分明地看到,数据并不现实,因为其中有马的图像也恰好蕴含树木、绿草或蓝天——它们可能在同一张照片中,但一个不影响另一个。 ...

March 29, 2023 · 2 min · jiezi

关于深度学习:一文详解扩散模型DDPM

作者:京东批发 刘岩扩散模型解说前沿人工智能生成内容(AI Generated Content,AIGC)近年来成为了十分前沿的一个钻研方向,生成模型目前有四个流派,别离是生成反抗网络(Generative Adversarial Models,GAN),变分自编码器(Variance Auto-Encoder,VAE),标准化流模型(Normalization Flow, NF)以及这里要介绍的扩散模型(Diffusion Models,DM)。扩散模型是受到热力学中的一个分支,它的思维起源是非均衡热力学(Non-equilibrium thermodynamics)。扩散模型的算法实践根底是通过变分推断(Variational Inference)训练参数化的马尔可夫链(Markov Chain),它在许多工作上展示了超过GAN等其它生成模型的成果,例如最近十分炽热的OpenAI的DALL-E 2,Stability.ai的Stable Diffusion等。这些成果惊艳的模型扩散模型的实践根底便是咱们这里要介绍的提出扩散模型的文章[1]和十分重要的DDPM[2],扩散模型的实现并不简单,但其背地的数学原理却十分丰盛。在这里我会介绍这些重要的数学原理,但省去了这些公式的推导计算,如果你对这些推导感兴趣,能够学习参考文献[4,5,11]的相干内容。我在这里次要以一个绝对简略的角度来解说扩散模型,帮忙你疾速入门这个十分重要的生成算法。 1. 背景常识: 生成模型 目前生成模型次要有图1所示的四类。其中GAN的原理是通过判断器和生成器的相互博弈来让生成器生成足以以假乱真的图像。VAE的原理是通过一个编码器将输出图像编码成特征向量,它用来学习高斯分布的均值和方差,而解码器则能够将特征向量转化为生成图像,它侧重于学习生成能力。流模型是从一个简略的散布开始,通过一系列可逆的转换函数将散布转化成指标散布。扩散模型先通过正向过程将噪声逐步退出到数据中,而后通过反向过程预测每一步退出的噪声,通过将噪声去掉的形式逐步还原失去无噪声的图像,扩散模型实质上是一个马尔可夫架构,只是其中训练过程用到了深度学习的BP,但它更属于数学层面的翻新。这也就是为什么很多计算机的同学看扩散模型相干的论文会如此费劲。 图1:生成模型的四种类型 [4] 扩散模型中最重要的思维根基是马尔可夫链,它的一个要害性质是平稳性。即如果一个概率随工夫变动,那么再马尔可夫链的作用下,它会趋向于某种安稳散布,工夫越长,散布越安稳。如图2所示,当你向一滴水中滴入一滴颜料时,无论你滴在什么地位,只有工夫足够长,最终颜料都会平均的散布在水溶液中。这也就是扩散模型的前向过程。 图2:颜料分子在水溶液中的扩散过程 如果咱们可能在扩散的过程颜料分子的地位、挪动速度、方向等挪动属性。那么也能够依据正向过程的保留的挪动属性从一杯被溶解了颜料的水中反推颜料的滴入地位。这边是扩散模型的反向过程。记录挪动属性的快照便是咱们要训练的模型。 2. 扩散模型在这一部分咱们将集中介绍扩散模型的数学原理以及推导的几个重要性质,因为推导过程波及大量的数学知识然而对了解扩散模型自身思维并无太大帮忙,所以这里我会省去推导的过程而间接给出论断。然而我也会给出推导过程的出处,对其中的推导过程比拟感兴趣的请自行查看。 2.1 计算原理扩散模型简略的讲就是通过神经网络学习从纯噪声数据逐步对数据进行去噪的过程,它蕴含两个步骤,如图3: 图3:DDPM的前向加噪和后向去噪过程 2.1.1 前向过程 2.1.2 后向过程 2.1.3 指标函数那么问题来了,咱们到底应用什么样的优化指标能力比拟好的预测高斯噪声的散布呢?一个比较复杂的形式是应用变分自编码器的最大化证据下界(Evidence Lower Bound, ELBO)的思维来推导,如式(6),推导具体过程见论文[11]的式(47)到式(58),这里次要用到了贝叶斯定理和琴生不等式。 式(6)的推导细节并不重要,咱们须要重点关注的是它的最终等式的三个组成部分,上面咱们别离介绍它们: 图4:扩散模型的去噪匹配项在每一步都要拟合乐音的实在后验散布和预计散布 实在后验散布能够应用贝叶斯定理进行推导,最终后果如式(8),推导过程见论文[11]的式(71)到式(84)。 \(p{\boldsymbol{\theta}}\left(\boldsymbol{x}{t-1} \mid \boldsymbol{x}t\right) = \mathcal N(\boldsymbol x{t-1}; \mu\theta(\boldsymbol x\_t, t), \Sigma\_q(t)) \tag9\) 2.1.4 模型训练 ...

March 29, 2023 · 3 min · jiezi

关于深度学习:这个小项目上周被国外-AI-新闻网站报道前些天又上了-github-热榜

疫情期间在校花了几个月工夫,写了这个小我的项目,是对于音频特征提取和剖析的,本人是 AI 业余钻研音频的,但受限于对音频特色的了解,做钻研时总感觉不足“底料”,所以当做是学习练手做了这个小东西。 因为是学习练手的小我的项目,放 github 下面后就没有太多跟进了,起初看到国内几个有名的 github 我的项目周报博主,想着提下 issure ,如果被收录发表的话,失去些关注取得一些 star 也是很开心的,没想到一个也没收录发表,issure 都是被疏忽跳过的。 想想有些灰心,做的这个小我的项目自身有些偏,和前后端畛域都不怎么沾边,和以后大火的 chatGPT 各种业务我的项目也比不了,不被收录发表也是失常的。原本想着这个小我的项目能有几十个 star 就很满足的,没想到除了同学的几个 star 之外一个关注都没有,灰心丧气之时,上周居然被国外一个 AI 新闻网站报道,带来了一些流量减少 200+star ,尽管相比 github 上一些爆火、优质的我的项目不值得一提,但相比之前几个 star 的状况好大多了,这是相干的文章:https://www.marktechpost.com/2023/03/24/meet-audioflux-a-deep...    过后还是首页报道,赶快截了图。 前些天又上 github trending ,这预计纯属运气好,但持续时间并不长,又减少了一小波流量带来 100+star 这是过后的榜单,简直都是 chatGPT 相干或其它大作的我的项目,我这个小我的项目显得有些心心相印,连忙截图了 最初看了一些关注用户,简直大部分都是国外的,各畛域都有,一些用户品质十分高,做深度学习相干的偏多。 心愿国内感兴趣的能关注反对一下,如果能参加退出进来一起做好这个开源小我的项目更好。我的项目地址: https://github.com/libAudioFlux/audioFlux

March 29, 2023 · 1 min · jiezi

关于深度学习:借助-mperf-进行矩阵乘法极致优化

作者:旷视 MegEngine 架构师 洪超前言单精度矩阵乘法(SGEMM)是十分典型的计算密集型算子,对 SGEMM 的优化也常常被当作算子优化从业人员的练手我的项目。本文将借助于 mperf,在 ARM A55 cpu 外围上对 SGEMM 的性能进行极致优化,过程中会展现 mperf 辅助性能优化工作的根本逻辑。心愿本文的读者对计算机体系结构有肯定理解,并且能够补充一些 TMA 的根底概念。另外,对于本文应用的 mperf 工具,更多具体介绍请参见之前的文章 mperf 介绍。 本文须要优化的计算指标是 C=AB,假如矩阵 A 大小为 MK,矩阵 B 大小为 KN,则失去矩阵 C 大小为 MN 。为了后文分块操作的不便,这里假如 M,N 是 4 的倍数,并抉择 M=N=K 别离为 100,200,300,500,700,900 的矩阵尺寸,对不同优化版本进行性能测试。本文所有试验代码均在 mperf/apps/cpu_pmu_analysis 目录下。 矩阵乘法优化寄存器和 FPU 优化——Naive 实现到循环展开矩阵乘法的 Naive 实现为三层循环计算: //lda:number of columns of A //ldb:number of columns of B//ldc:number of columns of C #define A(i, j) a[(i)*lda + (j)]#define B(i, j) b[(i)*ldb + (j)]#define C(i, j) c[(i)*ldc + (j)]void my_matmul_naive(int m, int n, int k, float* a, int lda, float* b, int ldb, float* c, int ldc) { int i, j, p; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { for (p = 0; p < k; p++) { C(i, j) = C(i, j) + A(i, p) * B(p, j); } } }}此时,测试 M=N=K 别离为100,200,300 时的 mperf 性能数据见 Naive_mperf , 对于这些测试数据的简略介绍请参见 mperf 测试数据。测试命令(后文其余优化版本的测试命令不再反复贴出): ...

March 28, 2023 · 23 min · jiezi

关于深度学习:OneFlow源码解析Eager模式下的设备管理与并发执行

作者|郑建华更新|赵露阳 通过这篇笔记,心愿能初步理解 OneFlow 在 Eager 模式下对设施的治理形式、设施执行计算的过程以及如何充分利用设施计算能力。这里的设施次要指相似 CUDA 这样的并行计算减速设施。 1设施、流相干类型及关系框架通过流(Stream)向设施(Device)提交计算工作。一个 Stream 是一个命令序列,能够类比 CUDA Stream(https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.h...),或者 CPU Thread 的指令序列。同一个 Stream 中的命令按程序执行;不同 Stream 之间的命令有依赖关系时,须要同步。不同的工作,比方 kernel 计算、host2device、device2host 等都有本人独立的 Stream,能够并发执行,从而在 Eager 模式下尽可能充分利用设施的异步并发执行能力。 OneFlow 中Device和Stream相干的局部类构造如下所示: Device相干类型 oneflow::Deviceoneflow::Device是用于示意设施的根底类型,例如:构建tensor时 flow.tensor(shape, device="cuda:1")就会在外部结构出这个根底的Device类型,其中设施编号为1、设施类型为CUDA。 oneflow/core/framework/device.h: class Device final { public: ... private: Device(const std::string& type, int64_t device_id); Maybe<void> Init(); const std::string type_; DeviceType enum_type_; const int64_t device_id_; const size_t hash_value_; std::shared_ptr<MemoryCase> mem_case_;};oneflow::Device中最重要的两个成员变量别离是用于示意设施类型的DeviceType;用于示意设施编号的device_id_。 DeviceType DeviceType是一个枚举类,不同的值代表不同的计算设施类型,其定义位于 oneflow/core/common/device_type.proto: enum DeviceType { kInvalidDevice = 0; // 有效设施 kCPU = 1; // cpu设施 kCUDA = 2; // cuda设施 kMockDevice = 3; // pseudo device for test.}目前在oneflow master分支中,次要有kCPU示意cpu设施;kCUDA示意nvidia cuda设施;在其余多设施反对的分支中,这里还减少了更多的设施类型。 ...

March 28, 2023 · 6 min · jiezi

关于深度学习:Huggingface微调BART的代码示例WMT16数据集训练新的标记进行翻译

BART模型是用来预训练seq-to-seq模型的降噪主动编码器(autoencoder)。它是一个序列到序列的模型,具备对损坏文本的双向编码器和一个从左到右的自回归解码器,所以它能够完满的执行翻译工作。 如果你想在翻译工作上测试一个新的体系结构,比方在自定义数据集上训练一个新的标记,那么解决起来会很麻烦,所以在本文中,我将介绍增加新标记的预处理步骤,并介绍如何进行模型微调。 因为Huggingface Hub有很多预训练过的模型,能够很容易地找到预训练标记器。然而咱们要增加一个标记可能就会有些辣手,上面咱们来残缺的介绍如何实现它,首先加载和预处理数据集。 加载数据集咱们应用WMT16数据集及其罗马尼亚语-英语子集。load_dataset()函数将从Huggingface下载并加载任何可用的数据集。 importdatasets dataset=datasets.load_dataset("stas/wmt16-en-ro-pre-processed", cache_dir="./wmt16-en_ro") 在上图1中能够看到数据集内容。咱们须要将其“压平”,这样能够更好的拜访数据,让后将其保留到硬盘中。 defflatten(batch): batch['en'] =batch['translation']['en'] batch['ro'] =batch['translation']['ro'] returnbatch # Map the 'flatten' function train=dataset['train'].map( flatten ) test=dataset['test'].map( flatten ) validation=dataset['validation'].map( flatten ) # Save to disk train.save_to_disk("./dataset/train") test.save_to_disk("./dataset/test") validation.save_to_disk("./dataset/validation")下图2能够看到,曾经从数据集中删除了“translation”维度。 标记器标记器提供了训练标记器所需的所有工作。它由四个根本组成部分:(但这四个局部不是所有的都是必要的) Models:标记器将如何合成每个单词。例如,给定单词“playing”:i) BPE模型将其合成为“play”+“ing”两个标记,ii) WordLevel将其视为一个标记。 Normalizers:须要在文本上产生的一些转换。有一些过滤器能够更改Unicode、小写字母或删除内容。 Pre-Tokenizers:为操作文本提供更大灵活性解决的函数。例如,如何解决数字。数字100应该被认为是“100”还是“1”、“0”、“0”? Post-Processors:后处理具体情况取决于预训练模型的抉择。例如,将 [BOS](句首)或 [EOS](句尾)标记增加到 BERT 输出。 上面的代码应用BPE模型、小写Normalizers和空白Pre-Tokenizers。而后用默认值初始化训练器对象,次要包含 1、词汇量大小应用50265以与BART的英语标记器统一 2、非凡标记,如<s>和<pad>, 3、初始词汇量,这是每个模型启动过程的预约义列表。 fromtokenizersimportnormalizers, pre_tokenizers, Tokenizer, models, trainers # Build a tokenizer bpe_tokenizer=Tokenizer(models.BPE()) bpe_tokenizer.normalizer=normalizers.Lowercase() bpe_tokenizer.pre_tokenizer=pre_tokenizers.Whitespace() trainer=trainers.BpeTrainer( vocab_size=50265, special_tokens=["<s>", "<pad>", "</s>", "<unk>", "<mask>"], initial_alphabet=pre_tokenizers.ByteLevel.alphabet(), )应用Huggingface的最初一步是连贯Trainer和BPE模型,并传递数据集。依据数据的起源,能够应用不同的训练函数。咱们将应用train_from_iterator()。 ...

March 23, 2023 · 1 min · jiezi

关于深度学习:全球使用率最高的五款3DMax插件总有一款适合你

3DMAX作为国内出名较高的3D建模软件,天然很多设计的敌人都在应用。同时也有很多插件应有而生,明天分享几款寰球使用率最高的五款3DMax插件! 一、MaxToBlenderMaxToBlender 2.0 for Blender 2.8MaxToblender是一个插件,能够通过2次单击将3dsmax以后场景传输到Blender,主动解决导入/导出问题之间的常见问题,以最快的形式和尽可能少的致力获得最佳后果。二、、汉化地板插件-多纹理插件反对版本:3ds max 2020-2021零碎要求:64位已激活的win7\win10反对语言:中文(子路汉化) 三、3Dmax标注工具插件反对版本:3ds max 2010-2021零碎要求:64位已激活的win7\win10反对语言:中文装置教程1.敞开max2.将文件【插件包】的 5个 .MS文件复制到-max插件目录 【Plugins】3.自定义用户界面-工具栏-新建工具栏 -类别【DIMaster】4.别离把【DIMaster】类别下的 4个【DIMine】【DIMangle】【DIMnote】【DIMasterUtils】放到刚建设的工具栏5. 在任意一个工具栏右击-编辑按钮外观 弹出对话框- 文本按钮对应的有个 工具提醒 和 标签 都改成本人喜爱的名字(内附装置教程和应用教程)留神:4个类别别离对应【DIMine】=线线性标注【DIMangle】=角度标注【DIMnote】=正文标注【DIMasterUtils】=文件寄存设置 四、gama批改插件反对版本:3ds max 09-2021零碎要求:64位已激活的win7\Win8\win10反对语言:中文版装置教程:间接拖拽场景gamma设置3dmax伽马插件疾速插件设置 五、摄像机独自分辨率反对版本:3ds max 2010-2021零碎要求:win7\win10反对语言:中文形容修改器可让您别离为每个摄像机设置渲染的分辨率。每当抉择摄像机或将视口窗口更改为摄像机时,都会更改分辨率。起源:3Dmax极限创意,仅供学习,如有侵权,请分割删除。

March 22, 2023 · 1 min · jiezi

关于深度学习:自动驾驶规划控制常用的控制方法有哪些

作者:zhangjq@知乎原文地址:https://zhuanlan.zhihu.com/p/483898434编辑:一点人工一点智能原文:主动驾驶布局管制罕用的管制办法有哪些? 管制是驱使车辆前行的策略。管制的指标是应用可行的管制量,最大限度地升高与指标轨迹的偏差、最大限度地提供乘客的舒适度等。如上图所示,与管制模块输出相关联的模块有布局模块、定位模块和车辆信息等。其中定位模块提供车辆的地位信息,布局模块提供指标轨迹信息,车辆信息则包含档位、速度、加速度等。管制输出量则为转向、减速和制动量。管制模块次要分为横向管制和纵向管制,依据耦合模式的不同能够分为独立和一体化两种办法。 01  管制办法1.1 解耦管制所谓解耦管制,就是将横向和纵向管制办法独立离开进行管制。 1.2 耦合管制耦合管制思考到了横纵向管制时存在的耦合问题。一个典型的例子是汽车不能高速过弯,因为当纵向速度过高时,横向角速度须要有肯定的限度,否则离心力无奈满足向心加速度。横纵一体的典型代表办法是线性时变模型预测管制,该办法在模型预测管制的根底上减少横纵向的联结束缚。如最大向心加速度束缚等。 1.3 横向管制如上图横向管制能够分为几何办法、基于运动学模型办法和基于动力学模型的办法。 1.3.1 前馈管制所谓前馈管制,即依据跟踪点信息对管制量进行提前适当的弥补。一个典型的例子是利用跟踪序列点中的曲率信息,对转角进行弥补。 1.3.2 Chained Form链式零碎将非线性零碎进行多层线性化,它将零碎进行逐层合成,进而能够将零碎快慢化,相似于滤波零碎[3]。零碎在frenet坐标下的模型:通过反向积分估算,能够失去控制率: 1.3.3 Lyapunov基于李雅普诺夫稳定性办法的设计能够使用在运动学和动力学模型上。其根本思维是首先建设运动学或者动力学模型,依据模型提出跟踪办法,而后建设李雅普诺夫函数,通过李雅普诺夫稳定性证实闭环零碎的渐近稳固[4]。· 运动学模型如上图所示,小车以后点为P,跟踪目标点为Pr。是以后地位和指标点的位姿差,和 别离为参考速度和角速度。设计李雅普诺夫函数:跟踪率设计:最终通过限定束缚设计参数,进而证实了跟踪率的渐近稳定性,即当 e → ∞时,→ 0。· 动力学模型首先建设动力学模型:其中:令则误差为:设计代价函数:设计控制率:最终证实渐进稳定性。 1.3.4 Pure Pursuit纯跟踪是一种几何门路跟踪控制器。该控制器应用车辆静止和参考门路的几何关系来跟踪参考门路的控制器。该管制办法应用车辆后轴核心用作参考点。依据上图可推到出前轮转角指令:其中R为转弯半径,L为车辆轴距,e为车辆以后姿势和指标路点在横向上的误差,为前视间隔且。依据上图试验数据所示前视间隔减少,跟踪抖动越来越小。较短的前视间隔可提供更准确的跟踪,而较长的前视间隔可提供更平滑的跟踪。PurePursuit的另一个特色是,在转弯跟踪时,过大的前视间隔会导致“cutting corners”。Pure Pursuit很难在稳定性和跟踪性能之间进行衡量。 1.3.5 Stanley与当前轴为参考点的纯追赶纯跟踪办法不同,Stanley控制器以前轴为参考点。它同时思考了航向误差和横向误差。Stanley控制器不仅思考航向误差,而且还思考了横向误差。依据上图可推到出前轮转角指令: 依据上图试验数据所示随着k的减少,跟踪性能也会进步。当车速变大时Stanley不像Pure Pursuit有足够的稳定性。 1.3.6 LQR基于车辆运动学模型的办法疏忽了车辆的动力学个性,因而在车速过快或者曲率变化率过大的状况下该算法无奈满足车辆的稳定性管制要求。对于基于车辆动力学模型的管制办法,首要的工作是对车辆动力学进行建模。因为准确的二自由度动力学模型是非线性的,为了便于进行实时的跟踪管制计算,通常还须要在准确的二自由度动力学模型根底上进行一些简化近似,失去线性二自由度动力学模型。· 车辆二自由度动力学模型: · LQR:线性二次调节器(Linear Quadratic Regulator或LQR)是基于模型的控制器,它应用车辆的状态来使误差最小化。LQR实践是古代管制实践中倒退最早也最为成熟的一种状态空间设计法。LQR可失去状态线性反馈的最优控制法则,易于形成闭环最优控制。LQR 最优设计是指设计出的状态反馈控制器 K 要使二次型指标函数 J 取最小值,而 K 由权矩阵 Q 与 R 惟一决定,故此 Q、R的抉择尤为重要。如下公式为LQR代价函数:依据车辆动力学模型和LQR代价函数能够推到出代数里卡提方程:最终通过迭代黎卡提方程计算反馈矩阵,再依据反馈矩阵获取最优控制量。 1.3.7 MPCMPC(Model Prediction Control)是一种致力于将更长时间跨度,甚至于无穷工夫的最优化管制问题, 合成为若干个更短时间跨度,或者无限时间跨度的最优化管制问题, 并且在肯定水平上依然谋求最优解。MPC由如下三个因素组成:1、 预测模型: 预测模型可能在短时间内很好的预测零碎状态的变动;2、 在线滚动优化: 因为预测模型失去的后果与理论依然存在偏差, 所以采纳滚动优化找到每个时刻下的部分最优解,通常状况会设计一个指标(损失)函数并将其转化为二次布局问题进而找到最优解;3、校对: 到下一个工夫点依据新的状态从新进行预测和优化。· 预测模型:依据LQR中的车辆动力学模型能够推出预测模型。 · 滚动优化:MPC代价函数:依据预测模型、车辆横向束缚、代价函数进行优化求解能够失去相应的控制指令。 1.3.8 横向控制算法比照 1.4 纵向如上图所示,纵向管制个别采纳采纳串级pid管制办法。 02  具体设计控制器的设计如上图所示,其中Controller为基类,LonController、LonController和MPCController继承该基类。LonController又衍生出LQRController、LyapunovController和StanleyController等子类。参考文献 Snider J M. Automatic steering methods for autonomous automobile path tracking[J]. Robotics Institute, Pittsburgh, PA, Tech. Rep. CMU-RITR-09-08,2009.Rajamani R. Vehicle dynamics and control[M]. Springer Science & Business Media, 2011.Minseong, Chae, Youngjin, et al. Dynamic Handling Characteristics Control of an in-Wheel-Motor Driven Electric Vehicle Based on Multiple Sliding Mode Control Approach[J]. IEEE Access, 2019, 7:132448-132458.于浩. 非残缺轮式移动机器人静止布局与管制钻研[D]. 中国海洋大学.1、 书籍举荐-《机器人门路布局与合作:根底、算法与试验》2、 最新|3D SLAM对于z轴精度的优化思路整顿3、 书籍举荐-《卡尔曼滤波与信息交融》4、 机器人静止|浅谈Time Elastic Band算法5、 书籍举荐-《大规模SLAM技术》6.、ROS与挪动底盘通信

March 20, 2023 · 1 min · jiezi

关于深度学习:基于飞桨实现的特定领域知识图谱融合方案ERNIEGram文本匹配算法

文本匹配工作在自然语言解决畛域中是十分重要的根底工作,个别用于钻研两段文本之间的关系。文本匹配工作存在很多利用场景,如信息检索、问答零碎、智能对话、文本甄别、智能举荐、文本数据去重、文本类似度计算、自然语言推理、问答零碎、信息检索等,这些自然语言解决工作在很大水平上都能够形象成文本匹配问题,比方信息检索能够归结为搜索词和文档资源的匹配,问答零碎能够归结为问题和候选答案的匹配,复述问题能够归结为两个同义句的匹配。而在常识交融过程中的关键技术是实体对齐,又被称为实体匹配,其旨在推断来自不同数据汇合中的不同实体是否映射到物理世界中同一对象的处理过程。实体对齐的终极目标是将多源知识库中的实体建设映射关系,也正因如此,文本匹配算法能够在常识交融过程中针对非结构化文本进行较好的语义对齐,建设映射关系,具体计划如下图所示。 在粗选阶段,咱们须要依据知识库寻找类似实体对,通过精准匹配和局部匹配的形式进行实体簇的粗选。其中,精准匹配次要采纳同名召回、同音召回、别名召回三类策略。局部匹配次要采纳jaccard间隔等办法构建倒排,依据阈值进行筛选。在精排阶段,咱们依据粗选进去的实体对,构建Pair-wise类特色,进行精密算分。依据特色的品种,能够划分为标签、属性、非结构化文本三类特色。在理论对齐工作中,头尾部的实体常常缺失各种要害属性,难以判断实体是否能够对齐,此时就利用非结构化文本提供要害信息,这里就能够通过应用飞桨ERNIE-Gram模型将依据计算的三类特色进行实体对齐。因为各畛域的schema不同,波及到的属性类特色也不尽相同。故依据对数据的剖析,为schema相差较大的畛域设计不同的GBDT模型,最终实现对齐。本文次要解说精排阶段的文本匹配算法,更多计划和技术细节请参考下述我的项目。 我的项目链接https://aistudio.baidu.com/aistudio/projectdetail/5456683?cha...我的项目合集https://aistudio.baidu.com/aistudio/projectdetail/5427356?con... 01 交融计划操作步骤Part-1 环境版本要求环境装置需依据Python和飞桨框架的版本要求进行抉择。 Python3 版本要求python3.7及以上版本,参考https://www.python.org/  飞桨框架版本要求飞桨框架2.0+版本,参考https://www.paddlepaddle.org.cn/documentation/docs/zh/install... 飞桨环境的装置需首先保障Python和pip是64bit,且处理器架构为x86_64(或称作x64、Intel 64、AMD64)。目前飞桨暂不反对arm64架构(mac M1除外,飞桨已反对Mac M1 芯片)。 Part-2 数据集简介LCQMC[1]是百度晓得畛域的中文问题匹配数据集,以解决中文畛域大规模问题匹配。该数据集从百度晓得的不同畛域用户问题中抽取构建数据。局部数据集展现如下: Part-3 模型状况在ERNIE-Gram模型[2]公布以前,学界工作次要集中在将BERT的掩码语言建模(MLM)的指标从Mask单个标记扩大到N个标记的间断序列,但这种间断屏蔽办法疏忽了对粗粒度语言信息的外部依赖性和互相关系的建模。作为一种改良办法ERNIE-Gram采纳了一种显式n-gram掩码办法,以增强对预训练中粗粒度信息的整合。在ERNIE-Gram中,n-grams被Mask并间接应用明确的n-gram序列号而不是n个标记的间断序列进行预测。此外,ERNIE-Gram采纳了一个生成器模型,对可信的n-gram序列号进行采样,作为可选的n-gram掩码,并以粗粒度和细粒度的形式进行预测,以实现全面的n-gram预测和关系建模。在论文中试验表明,ERNIE-Gram在很大水平上优于XLNet和RoBERTa等预训练模型。其中掩码的流程见下图所示。 ERNIE-Gram模型充沛地将粗粒度语言信息纳入预训练,进行了全面的n-gram预测和关系建模,打消之前间断掩蔽策略的局限性,进一步加强了语义n-gram的学习。n-gram关系建模的具体架构如下图所示,子图(b)中是一个n-gram抽样的例子,其中虚线框代表抽样模块,绿色的文本是原始n-gram,蓝色的斜体文本是抽样的n-gram。本文不一一开展,更多算法原理和技术细节请参考原论文。 为让同学们疾速上手,本我的项目应用语义匹配数据集LCQMC作为训练集,基于ERNIE-Gram预训练模型训练了单塔Point-wise语义匹配模型,用户能够间接基于这个模型对文本对进行语义匹配的二分类工作。(在文本匹配工作数据的每一个样本通常由两个文本组成query和title。类别模式为0或1,0示意query与title不匹配,1示意匹配。)同时思考到在不同利用场景下的需要,上面也将简略解说一下不同类型的语义匹配模型和利用场景。基于单塔Point-wise范式的语义匹配模型Ernie_Matching模型精度高、计算复杂度高, 适宜间接进行语义匹配二分类的利用场景。基于单塔Pair-wise范式的语义匹配模型Ernie_Matching模型精度高、计算复杂度高,对文本类似度大小的序关系建模能力更强,适宜将类似度特色作为下层排序模块输出特色的利用场景。基于双塔Point-Wise范式的语义匹配模型计算效率更高,适宜对延时要求高、依据语义类似度进行粗排的利用场景。 Part-4 模型训练与预测以中文文本匹配公开数据集LCQMC为示例数据集,可在训练集(train.tsv)上进行单塔 Point-wise 模型训练,并在开发集(dev.tsv)验证。模型训练 %cd ERNIE_Gram!unset CUDA_VISIBLE_DEVICES!python -u -m paddle.distributed.launch --gpus "0" train_pointwise.py \ --device gpu \ --save_dir ./checkpoints \ --batch_size 32 \ --learning_rate 2E-5\ --save_step 1000 \ --eval_step 200 \ --epochs 3# save_dir:可选,保留训练模型的目录;默认保留在当前目录checkpoints文件夹下。# max_seq_length:可选,ERNIE-Gram 模型应用的最大序列长度,最大不能超过512, 若呈现显存有余,请适当调低这一参数;默认为128。# batch_size:可选,批处理大小,请联合显存状况进行调整,若呈现显存有余,请适当调低这一参数;默认为32。# learning_rate:可选,Fine-tune的最大学习率;默认为5e-5。# weight_decay:可选,管制正则项力度的参数,用于避免过拟合,默认为0.0。# epochs: 训练轮次,默认为3。# warmup_proption:可选,学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0缓缓增长到learning_rate, 而后再迟缓衰减,默认为0.0。# init_from_ckpt:可选,模型参数门路,热启动模型训练;默认为None。# seed:可选,随机种子,默认为1000.# device: 选用什么设施进行训练,可选cpu或gpu。如应用gpu训练则参数gpus指定GPU卡号。预测后果局部展现。 ...

March 20, 2023 · 2 min · jiezi

关于深度学习:在Mac上体验Pytorch-20-自注意力性能提升示例

本文次要是Pytorch2.0 的小试验,在MacBookPro 上体验一下等优化改良后的Transformer Self Attention的性能,具体的有 FlashAttention、Memory-Efficient Attention、CausalSelfAttention 等。次要是torch.compile(model) 和 scaled_dot_product_attention的应用。 相干代码已上传GitHub:https://github.com/chensaics/Pytorch2DL Pytorch2.0版本来了,带来了很多的新技术。明天创立了Pytorch2DL仓库,次要是应用Jupyter Notebook 联合Pytorch2做一些深度学习的示例。 Pytorch2.0 技术亮点 torch.compile包装并返回编译后的模型 Accelerated Transformers咱们能够通过调用新的scaled_dot_product_attention() 函数间接应用缩放点积注意力 (SPDA)内核。以前咱们想要减速训练,要应用第三方库,比方 Flash Attention、xFormers等,当初都被原生反对到框架中了,具体的是在 torch.nn.MultiheadAttention 和 TransformerEncoderLayer 中。 下一节咱们应用上下文管理器显示调度不同的内核做性能比照。 Metal Performance Shaders (MPS后端)在Mac上也能享受GPU减速的PyTorch训练哦!在Windows和Linux上应用GPU还是CPU,咱们通常加一句:device = "cuda" if torch.cuda.is_available() else "cpu"在Mac上:device = torch.device("mps") 我联合MPS和scaled_dot_product_attention做一个示例: 其余新技术TensorParallel、DTensor、2D parallel、TorchDynamo、AOTAutograd、PrimTorch和TorchInductor TorchDynamo是借助Python Frame Evaluation Hooks能平安地获取PyTorch程序; AOTAutograd重载PyTorch autograd engine,作为一个 tracing autodiff,用于生成超前的backward trace。 PrimTorch简化了编写 PyTorch 性能或后端的流程。将 2000+ PyTorch 算子演绎为约 250 个 primitive operator 闭集 (closed set)。 TorchInductor一个深度学习编译器,能够为多个加速器和后端生成 fast code。 ...

March 19, 2023 · 4 min · jiezi

关于深度学习:一键飞桨轻松实现飞桨框架和套件的下载安装

大家好,我是漫步,很荣幸能和大家分享一个搭建飞桨全系列产品开发和应用环境的小工具。心愿它可能帮忙你在新场景下疾速搭建飞桨工作台,让大家可能更简略地将飞桨安利给身边的敌人。 01 简介你是否在新的虚拟环境或者新电脑上配置飞桨环境时发现一个个克隆飞桨的仓库很麻烦?没有关系!我给大家提供了一个超级不便的工具,你能够一键装置飞桨框架以及CUDA(目前该工具默认装置CUDA11.2版本)和CUDNN的环境配置,并且能够一键下载并装置本人想要的飞桨套件,省去搜寻、下载、环境配置的工夫,更专一于我的项目内容的开发。 你能够通过AI Studio我的项目的挂载数据集或者GitHub仓库获取该工具(后文统称“一键飞桨”工具)。 AI Studio我的项目https://aistudio.baidu.com/aistudio/datasetdetail/189777 GitHub仓库https://github.com/sanbuphy/fool-proof-paddle 02 操作步骤接下来我将具体介绍在Linux和Windows零碎上如何应用“一键飞桨”工具。 备注:所有操作都在装置工具解压后的文件夹内实现。 Linux环境下应用阐明Linux环境下的下载 如果仅仅为了下载,你能够间接在解压“一键飞桨”后的文件目录下输出bash main.sh命令行,随后输出1即可进入下载抉择界面。 在下载抉择界面,通过间断输出飞桨框架或者飞桨套件对应的大写字母,即可下载对应的仓库。假如咱们想下载飞桨框架Paddle仓库、飞桨模型压缩工具PaddleSlim仓库、飞桨轻量化推理引擎Paddle Lite仓库,咱们能够间断输出大写字母ABC,即可实现以上仓库的主动下载。依据图片所示,能够大略理解套件的下载办法,例如: 最初看到以下内容,就阐明已下载胜利! Linux环境下的装置 为了实现飞桨框架以及飞桨套件的装置,首先在命令行输出source main.sh,即呈现以下界面。 随后输出2以执行装置飞桨框架以及飞桨套件,呈现的界面如下图所示。 随后输出1以装置飞桨框架及对应CUDA环境。输出2以装置之前下载好的飞桨套件。 Windows环境下应用阐明Windows环境中的下载 输出python main.py而后输出对应的字母实现下载。如果你没有装置git bash,此时会主动下载并装置git bash。留神,请一路依照默认装置!不要本人改装置地点。 输出字母后便进入下载方式的抉择,此时举荐第一次抉择N,第二次抉择Y即可应用gitee的http形式下载各个仓库,速度较快。最初,当看到下方内容,就阐明曾经下载胜利啦! Windows环境下的装置 在对应虚拟环境中执行python main.py,其余依照提醒操作即可实现飞桨框架的装置和所有已下载套件的装置。 除了能够装置飞桨框架,目前“一键飞桨”工具反对下载和装置的飞桨套件如下:(不断更新中) PaddleDetectionPaddleSpeechPaddleClasPaddleSegPaddleNLPPaddleVideoPaddleOCRPaddleGANPaddleSlimFastDeploy 03 工具制作过程分享尽管该我的项目看起来简略,但理论整个工具的制作过程遇见了较多艰难。在此特别感谢帮忙我测试的每个敌人,因为你们让我的项目更为持重。制作工具的初始,我也思考过间接应用Python做成跨平台下载与装置工具,但思考到可实现性和速度,最终采纳了更简略间接的性能实现形式。同时,为了避免装置问题产生,装置代码中还退出了很多防御性查看(是否装置、是否下载、是否装置胜利),最大水平进步了工具的稳健性。接下来我将针对Linux和Windows版本别离介绍实现过程中的艰难点: Linux环境工具制作分享 主我的项目的入口次要起到工作散发的作用,制作过程中先保障了每局部的独立性能后才进行整体集成,以保障单元的可执行、可测试。 为了疾速实现性能,这里抉择了简略粗犷的shell数组形式。对于下载局部的实现可在download_paddle.sh里查看: 如果你想要退出新的下载仓库,能够用同样的形式在上面退出即可。在环境装置环节,思考到网络可能存在不稳固的状况,采纳“wget -c”保障飞桨程序安装包能顺利装置。 与CPU版本的飞桨不同,GPU版本装置好后还需进行环境配置。 环境配置环节,CUDA和CUDNN的装置最为让人头痛。为此,退出检测环境和驱动CUDA版本的判断,以笼罩大部分用户装置的根底环境。同时依据NVIDIA官网文档具体对照了gcc版本确定了装置逻辑(CUDA程序安装对gcc版本有要求)。这让不同用户都能够稳固装置,防止报错。 接下来是CUDNN装置环节,在这一部分我还做了多项查看保障装置的正确: 脚本的最初退出环境变量,以让默认链接过程能搜寻到对应的依赖。这里应用CUDA而非网上常见的CUDA 11.2 等实现操作,是因为CUDA的实质是软链接,在实现装置后会被主动软链接为装置版本。软链接对象可在对应文件夹下应用ll命令查看。通过这种形式,可实现WSL和Linux实体机的独特兼容。 至此,下载和装置的脚本思路曾经介绍结束,接下来我将介绍无关套件装置脚本的一个值得注意的小技巧:局部套件须要运行python脚本以验证成果。通过应用`笼罩局部python脚本,实现了用python – c在shell脚本中验证残缺套件。 也能够通过一一宰割实现雷同目标。但过于繁琐,并不举荐。 至此,Linux环境工具制作过程曾经大略介绍结束。总体来说应用Linux装置脚本制作较为简单(集体偏爱)。 Windows环境工具制作分享Windows工具的制作比Linux环境要繁琐的多。因为很多调用形式非凡,且与Linux齐全不兼容,所以在查阅工具的过程中破费了很多工夫。这里我采纳在脚本中间接下载安装git-windows的形式,以实现Linux环境的下载工具的间接复用。对于Windows环境下的飞桨装置工具,一开始我没有想好怎么利用以后虚拟环境解释器去装置对应的环境,只能用这种办法对须要pip装置的库进行装置: ...

March 13, 2023 · 1 min · jiezi

关于深度学习:天池-DeepRec-CTR-模型性能优化大赛-夺冠技术分享

作者:niceperf 团队 (李扬, 郭琳) 大家好,咱们是 niceperf 团队,在天池 DeepRec CTR 模型性能优化大赛中,很荣幸获得了冠军的问题 (Top 1/3802)。这篇文章复盘一下咱们的参赛教训,心愿对大家有所启发。 1.背景介绍咱们团队包含两名成员:李扬、郭琳,现就职于国内出名互联网公司,负责广告算法工程师。本次较量的赛题,是在给定的深度学习框架 DeepRec 下,优化 WDL、DeepFM、DLRM、DIN、DIEN、MMoE 六大经典模型的单机 CPU 训练速度。 赛题具备肯定的挑战性,咱们在日常工作中常常应用的训练性能优化伎俩次要是分布式训练和数据IO 优化,而本次较量限定了是单机条件,而且在数据 IO 方面的性能晋升空间很无限。这就要求咱们联合模型构造与训练框架,做出更粗疏深刻的优化。 好在赛题波及的技术栈与咱们是较为符合的,较量初期短暂适应后就能够上手优化了。首先,DeepRec的底层框架是 TensorFlow 1.15,咱们在日常工作中已对其外围代码十分相熟;此外,较量所波及的模型,团队成员在理论业务中已应用多年,可能联合对模型构造的了解,更快定位训练性能瓶颈所在之处,便于正当调配较量精力,在劣势方向重点发力。 2.优化内容在做优化之前,要先确定优化的切入点,先把 low-hanging fruit 拿到,再做更深刻的优化,有利于较量的推动。咱们逐模型剖析了单步耗时,统计后果如下图所示: 从数据来看,DeepFM 耗时如此之高是不合乎预期的,因而咱们将该模型作为切入点,开展后续的优化。 (1) IndicatorColumn 算子优选 (DeepFM)DeepFM 的单步训练timeline 如下图所示: 对上图数据做 op 粒度的下钻剖析后发现,OneHot 为耗时头部算子,而该算子来自于 IndicatorColumn,这里可能存在较大优化空间。 进一步,咱们精读了 IndicatorColumn 的源码。为了兼容定长 & 非定长的特色,其输出类型为 SparseTensor,输入类型为 Tensor,为该特色的 multi-hot 表白。具体处理过程分为三步: Step 1:调用sparse_tensor_to_dense,将 SparseTensor 转为 Tensor;Step 2:调用 one_hot,失去每个子特色的 one-hot 表白;Step 3:调用reduce_sum,将属于同样本的子特色 one-hot 求和,失去 multi-hot 表白。 针对局部高度稠密的特色,sparse_tensor_to_dense 带来了额定的 padding,引入了有效计算。针对这一问题,咱们创立了子类IndicatorColumnV2,扭转原有的 multi-hot 生成形式,采纳 scatter_nd 代替 sparse_tensor_to_dense + one_hot + reduce_sum。代码示意如下: ...

March 13, 2023 · 2 min · jiezi

关于深度学习:阅读表格检测识别技术的发展历程

近年来,随着计算机技术的飞速发展,越来越多的研究者开始关注表格检测辨认技术。表格检测辨认技术是一种利用计算机主动解决表格的技术,它能够实现从文本中检测出表格,并进行辨认和提取。这种技术有助于进步文本处理的效率,为计算机辅助常识发现和常识开掘提供了反对。 表格检测和辨认技术的倒退能够追溯到20世纪80年代,过后,随着计算机技术的倒退,人们开始尝试应用计算机来检测和辨认文档中的表格。过后的技术次要以传统的计算机视觉技术为根底,包含图像处理、分类和特征提取等技术。晚期的表格检测与辨认钻研次要是基于启发式规定的办法,即指定一组规定来进行决策,以便辨认出满足特定条件的表格。 1980年代,Yann Le Cun传授在论文《模式识别的数字图像处理》中提出了第一个用于表格检测的神经网络。它引入了一种可用于提取表格边缘特色的滤波器,并将其用于训练模型。Le Cun的论文为表格检测辨认技术的倒退提供了根底。1990年代,论文《利用结构特征进行表格检测》中提出了一种基于结构特征的表格检测算法论文利用表格中的斜线、网格线和表格边框等结构特征来检测表格,使表格检测技术倒退到了新的高度。2002年,论文《基于序列的表格检测》中提出了一种基于序列模式的表格检测算法。论文的办法应用序列模式来检测表格,并能够更好地解决简单表格构造,为表格检测技术的倒退带来了新的思路。2008年,论文《基于统计模型的表格检测》中提出了一种基于统计模型的表格检测算法,能够无效地检测简单的表格构造,为表格检测技术的倒退做出了重大贡献。 21世纪初,因为计算机视觉技术的倒退,学者们开始应用机器学习和深度学习技术来检测和辨认表格。随着深度学习技术的倒退,表格检测和辨认技术也产生了巨大变化。深度学习技术为表格检测和辨认技术带来了新的倒退时机,也为表格检测和辨认技术提供了更加无效的解决方案。近年来,随着计算机技术的进一步倒退,深度学习技术的一直演进,使表格检测和辨认技术倒退得更加迅速。表格辨认也逐步演变成了多个子钻研畛域,包含表格检测、表格构造辨认、表格内容辨认、端对端的表格检测与构造辨认等。 2010年,微软研究院通过多年的钻研,首次以自动化的模式检测和辨认表格,开发了一个叫做“TableNet”的表格检测零碎,该零碎能够自动检测出网页上的表格,并将其转换为结构化的数据。这一技术的呈现极大地推动了表格检测辨认技术的倒退。2010年,论文《基于深度学习模型的表格检测》中提出了一种基于深度学习模型的表格检测算法。该论文引入了深度学习技术,提供了一种更加无效的办法来检测表格,为表格检测技术的倒退提供了重要反对。2011年,微软研究院在当年的国内图像处理会议上。发表了《表格辨认:基于深度学习的办法》,基于深度学习的表格辨认技术首次呈现,这一技术可能辨认文档中的表格,从而帮忙用户疾速提取文档信息。2013年,随着深度学习技术的进一步倒退,表格检测辨认技术也获得了很大的提高,开发出了更加精密的检测和识别系统,可能反对更多简单的文档类型,例如多行表格、多列表格等。2015年,基于深度学习的表格检测辨认技术又获得了一个重大突破,Yann Le Cun传授提出了基于深度神经网络的表格辨认技术,它能够更好的解决简单的表格,且具备较高的检测准确率和辨认精度。2017年,Google公布了第一个基于深度学习的表格检测模型“Google DocumentAI”,该模型能够在任何给定的图像中检测出表格,并将其转换为结构化的数据。这一技术的呈现推动了表格检测辨认技术的倒退。2018年,微软公布了一个称为“Azure Table Recognition”的表格检测模型,该模型能够辨认简单的表格,包含多列和多行表格,以及简单构造的表格。同时反对表格构造主动进行抽取,一键提取表格数据,反对将表格数据转换为其余格局,反对在线辨认表格。这一技术的呈现,使表格检测别技术又上了一个新台阶。2019年,通过多年钻研,Google开发了一个称为“TableBank”的表格检测模型,该模型能够自动识别各种类型的表格,并将其转换为结构化的数据。同年,基于深度学习的表格检测辨认技术又获得了又一个重大突破,提出了一种基于自注意力机制的表格检测与辨认技术,它可能无效解决简单的文档表格,且具备更高的准确率和精度。 目前,工业界已涌现了一大批表格检测和辨认的服务。国外的一些大型云服务商曾经在他们的平台上提供了表格检测和辨认的性能,比方亚马逊的Textact服务,微软的Azure服务等。而在国内,既有一些提供表格检测和辨认等云端根底服务的互联网公司,例如百度、 阿里巴巴、腾讯、华为和网易等,也有一些深耕于相干畛域多年的业余服务提供商,例如合合信息等。 从表格构造辨认的成果上看,国内目前曾经处于世界较为当先的程度。2020年末和2021年初由IBM公司发动举办了ICDAR2021迷信文档解析较量,其中的工作二--表格辨认工作,吸引了来自国内外的多个公司、学校加入。国内许多公司都参加了这场较量,其中海康威视提出的LGPMA模型和安全科技提出的TableMaster模型别离获得了较量的第一、二名。由此可见,在表格检测和构造辨认的钻研畛域,尤其是在利用方面,国内的研究者曾经获得了国内当先的位置。 在表格信息抽取方面,国内的研究者在基于图和基于二维特色网格的办法上居于世界领先地位,PICK,MatchVIE和ViBERTGrid等办法在各类信息抽取工作榜单中居于前列;国外的研究者在基于序列的办法上较为突出,提出了LAMBERT,TILT等一系列体现优异的模型,这与国外积攒已久的语言模型倒退教训密不可分,在基于二维特色网格的办法上国外起步更早,提出了Chargrid和BERTgrid等经典模型,而对于基于图的办法钻研较少。总体而言,近年来国内外研究者对表格内容辨认均有很高的钻研激情,这一畛域的办法也呈现出多样化倒退的趋势。 参考文献:Kong L J, Bao Y C, Wang Q W and Li H K. 2021. Summary of table detection and recognition algorithms based on deep learning. Computer & Network,47(02):65-73.Gao L C, Li Y B, Du L, Zhang X P, Zhu Z Y, Lu N, Jin L W, Huang Y S, Tang Z . 2022. A survey on table recognition technology. Journal of Image and Graphics, 27(6): 1898-1917. ...

March 10, 2023 · 1 min · jiezi

关于深度学习:技术干货PaddleDetection-v26发布目标小数据缺标注累泛化差PP新员逐一应对

从2022年10月份开始,大家曾经陆续在PaddleDetection仓库的develop分支下尝鲜体验了一些预公布的新算法。现在通过4个月的打磨降级,PaddleDetection v2.6正式公布,最新版本有哪些更新以及性能晋升呢?快来关上这份更新解读吧! 更新重点 PP-YOLOE家族再添新员,半监督、少样本、蒸馏学习加持,旋转框、小指标、密集全场景检测笼罩;PP-Human、PP-Vehicle:性能新增、推理提速、多路视频流反对;半监督检测、少样本学习、模型蒸馏算法全面开源,助力解决少样本、泛化性、标注量、冷启动问题。可进入下方链接疾速体验 https://github.com/PaddlePaddle/PaddleDetection 对于PaddleDetection的技术问题以及文末彩蛋欢送大家入群探讨,也欢送大家在GitHub点star反对咱们的工作! 01 PP-YOLOE家族再添新员在理解PP-YOLOE家族v2.6降级内容前,让咱们先回顾一下PP-YOLOE+模型的特点。 PP-YOLOE+是基于飞桨云边一体高精度模型PP-YOLOE迭代优化降级的版本,具备以下特点: 训练收敛减速应用Objects365预训练模型,缩小训练轮数,训练收敛速度晋升3.75倍。 上游工作泛化性显著晋升在农业、夜间安防、工业等不同场景数据集上验证,精度最高晋升8.1%。 高性能部署能力本次降级PP-YOLOE+反对多种部署形式,包含Python/C++、Serving、ONNX Runtime、ONNX-TRT、INT8量化等部署能力。 超强性能与超高泛化性使得PP-YOLOE+助力开发者在最短时间、最大量数据上能失去最优成果。如下图是PP-YOLOE+各个版本模型的性能状况 下图是PP-YOLOE+与其余YOLO支流模型的benchmark状况。在速度和精度下面,PP-YOLOE+均有劣势。 理解更多https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/ppyoloe 在v2.6更新内容中,基于PP-YOLOE+的根底: 咱们补充了旋转框检测、小指标检测、密集检测场景专用模型同时针对端侧GPU场景的超高推理速度要求,进一步补充了超轻量通用指标检测模型PP-YOLOE+_t版本同时咱们提供了这些通用模型和专用模型(旋转框检测、小指标检测、密集检测)的半监督学习、少样本学习、模型蒸馏技术计划,助力解决业务场景中少样本、泛化性、标注量、冷启动等难题。接下来就具体看一下吧。 PP-YOLOE+旋转框、小指标、密集全场景检测笼罩PP-YOLOE-R:旋转框检测模型 PP-YOLOE-R(Rotate) 是一个高效的单阶段Anchor-free旋转框检测模型,基于PP-YOLOE+引入了一系列改良策略来晋升检测精度。依据不同的硬件对精度和速度的要求,PP-YOLOE-R蕴含s/m/l/x四个尺寸的模型。 在DOTA 1.0数据集上,PP-YOLOE-R-l和PP-YOLOE-R-x在单尺度训练和测试的状况下别离达到了78.14mAP和78.28 mAP,这在单尺度评估下超过了简直所有的旋转框检测模型。通过多尺度训练和测试,PP-YOLOE-R-l和PP-YOLOE-R-x的检测精度进一步晋升至80.02mAP和80.73 mAP,超过了所有的Anchor-free办法并且和最先进的Anchor-based的两阶段模型精度简直相当。在放弃高精度的同时,PP-YOLOE-R防止应用非凡的算子,例如Deformable Convolution或Rotated RoI Align,使其能轻松地部署在多种多样的硬件上。 理解更多https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/rotate/ppyoloe_r PP-YOLOE-SOD:小指标检测模型 PP-YOLOE-SOD(Small Object Detection) 针对小指标检测提出了两种检测计划,别离是基于切图拼图流程优化的小指标检测计划以及基于原图模型算法优化的小指标检测计划。同时提供了数据集主动剖析脚本,只需输出数据集标注文件,便可失去数据集统计后果,辅助判断数据集是否是小指标数据集以及是否须要采纳切图策略,同时给出网络超参数参考值。在VisDrone-DET数据集上,单模型精度达到38.5mAP。 理解更多https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/smalldet PP-YOLOE-DOD:密集检测模型 PP-YOLOE-DOD(Dense Object Detection) 是基于PP-YOLOE+的密集指标检测算法,针对密集检测工作,咱们做了如下优化: 数据预处理 为了适应商超数据的高分辨率,咱们增大了模型训练和推理的输出尺寸;标签匹配策略为了适应密集场景,咱们去除了动态匹配策略,在全副的训练周期中都应用动静匹配策略。在SKU数据集检测精度mAP 60.3,达到了开源最优。 理解更多 https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/ppyoloe/application PP-YOLOE+_t:超轻量通用指标检测模型PP-YOLOE+_t是对PP-YOLOE+ x、l、m、s版本通用检测模型的进一步丰盛,次要针Jetson等端侧GPU硬件对检测的帧率与速度均有极高要求的状况下提出的超轻量模型,通过优化匹配策略、减少辅助头、更小的输出尺寸等形式优化性能与速度,实现“速度腾飞”! 比拟理解PaddleDetection的开发者可能晓得,咱们其实还有另一个速度腾飞的模型大杀器PP-PicoDet,二者的次要区别是PP-PicoDet次要是针对Arm等端侧CPU场景打造的,而PP-YOLOE+ 次要针对GPU场景打造。PP-YOLOE+_t聚焦于Jetson等边缘端场景应用,大家在选型时能够做参考。如下图是PP-YOLOE+_t版本的性能体现: 理解更多https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/ppyoloe PP-YOLOE+半监督、少样本和蒸馏学习计划,助力解决少样本、泛化性、标注量、冷启动问题PP-YOLOE+少样本学习计划PaddleDetection团队针对PP-YOLOE+ 提供了少样本学习的计划,引入了Compare-Contrast算法。 在预训练模型的根底上,仅通过极少的标注数据即可训练失去较好的模型成果。下表是PP-YOLOE+_s版本模型在工业数据集PKU-Market-PCB上,通过引入少样本学习计划,Box AP失去了2.4的晋升。 理解更多https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/few-shot PP-YOLOE+半监督学习计划PaddleDetection团队联合Dense Teacher前沿算法,针对PP-YOLOE+ 提供了半监督学习计划。 半监督学习联合有标签数据和无标签数据,在大幅节俭数据标注的状况下,仍然达到较高的模型精度。在理论产业利用过程中,半监督学习是我的项目冷启动时常见的策略之一。下表是,在仅采纳5%、10%有标签数据进行监督学习,95%、90%无标签数据进行半监督学习的状况下,精度失去了1.2~2.5的晋升。 ...

March 10, 2023 · 1 min · jiezi

关于深度学习:使用ControlNet-控制-Stable-Diffusion

本文将要介绍整合HuggingFace的diffusers 包和ControlNet调节生成文本到图像,能够更好地管制文本到图像的生成 ControlNet是一种通过增加额定条件来管制扩散模型的神经网络构造。它提供了一种加强稳固扩散的办法,在文本到图像生成过程中应用条件输出,如涂鸦、边缘映射、宰割映射、pose关键点等。能够让生成的图像将更靠近输出图像,这比传统的图像到图像生成办法有了很大的改良。 ControlNet 模型能够在应用小数据集进行训练。而后整合任何预训练的稳固扩散模型来加强模型,来达到微调的目标。 ControNet 的初始版本带有以下预训练权重:Canny edge — 彩色背景上带有红色边缘的单色图像。Depth/Shallow areas — 灰度图像,彩色代表深区域,红色代表浅区域。Normal map — 法线贴图图像。Semantic segmentation map——ADE20K 的宰割图像。HED edge — 彩色背景上带有红色软边缘的单色图像。Scribbles — 彩色背景上带有红色轮廓的手绘单色涂鸦图像。OpenPose (姿态关键点)— OpenPose 骨骼图像。M-LSD — 仅由彩色背景上的红色直线组成的单色图像。上面咱们开始进行整合: 设置倡议在安装包之前创立一个新的虚拟环境。 diffusers 激活虚拟环境,执行以下命令: pip install diffusersControlNet要求diffusers>=0.14.0 accelerate pip install accelerate本教程蕴含一些依赖于accelerate>=0.17.0,须要应用上面命令装置最新版本: pip install git+https://github.com/huggingface/accelerateopencv-python 为了简略起见,咱们应用canny边缘处理器,所以它须要opencv-python包。 Opencv-python有4个不同的包。官网文档举荐应用opencv-contrib-python包,但也能够应用以下任何包进行: opencv-python主包opencv-contrib-python -完整包(附带contrib/额定模块)opencv-python-headless -没有GUI的主包opencv-contrib-python-headless -没有GUI的完整包所以咱们这里应用完整包: pip install opencv-contrib-pythoncontrolnet-aux OpenPose处理器须要controlnet-aux包。执行如下命令装置: pip install controlnet-auxxformers(可选) xformers包能够进步了推理速度。最新版本为PyTorch 1.13.1提供了pip wheels反对。 pip install -U xformersconda能够装置反对torch1.12.1或torch1.13.1 conda install xformers好了,这里的环境就设置结束了 ...

March 10, 2023 · 2 min · jiezi

关于深度学习:XJCO-1921流程详解

XJCO 1921- Programming Project - Coursework 2This work is the second coursework for this module. It corresponds to 70% of the overall assessment forthis module.This work has two submission deadlines:Submission Deadlines: Planning Report (20 marks): 12 PM BST on Friday 29 April 2022 via MinervaProject implementation (50 marks): 12 PM BST on Wednesday 11 May 2021; via MinervaProject Implementation [50 marks]You are asked to implement one of the topics described below using the C programming language. Use agit repository host like GitHub or Gitlab for version control throughout the project life cycle.Important notes: You should create a new git repository for this coursework. There is code online for the project topics, some in C, some in other languages. If you choose touse some other code or libraries as a starting point, you must include the reference to this code inyour planning report. Make sure you attribute any publicly available code that you use to its propersources. You must also be clear what the code you have written and what code you found online during labmarking (e.g., by commenting on the source code). You are expected to apply the modular and testing programming techniques taught in the module. Agood implementation should have a dedicated (regression) test suite. Makefile: You should also submit a Makefile with at least two targets: all and clean. "make all"compiles your code to generate an executable binary, while "make clean" removes all object files(.o), all executables, and any temporary files created during your run. Version control: We will check the commit logs of your git repository. We expect to see steadyprogress towards completion, as revealed in the pattern of git commits. One of the implications ofthis is that we will be penalising any student who develops their code without git, then dumps it allinto git at the last minute.Project TopicsProject 1 – Route findingThis project asks you to compute the best path between 2 points on a map.You are given a large data set (to be downloaded from Minerva) that represents all the footpaths on theLeeds University Campus that you can use to test your applicationWhat does it involve?Data input from a file - the data file is quite complex, and you have to read it inData structures - you have to decide how to store the data; there are suggestions belowAlgorithms - you have to create a function to find a path between 2 points; there are standard algorithms forthis that you read about 2 More informationGiven a data set in the form of a set of locations (Nodes) and paths connecting them (Links), you shouldimplement an algorithm to compute the best route between 2 given locations."Best" could, for example, be the shortest route, but you may wish to consider other measures.The data set is attached in the file 'Final_Map.map' and represents footpaths on campus. A jpeg image,also attached, shows what the path network looks like.The following requirements are essential:You should create a suitable data structure for the problem - a suitable candidate would be an AdjacencyList which stores a list of points in the data, and for every point, a list of points that are connected to it withedges.https://www.khanacademy.org/computing/computer-science/algori...You should consider importing the data into your data structure.You should consider a suitable visualisation of the data - see attached jpeg. A good (1st)implementation would require you to visualise the map and the path found.You should implement at least one algorithm that finds a path between 2 given points.NotesThe data file contains several lists of different types of data.The most basic is the "node" which is a point in space with coordinates defined by (lat,lon) - you can usethem as (x,y). Each node has a defined "id".The next is the "link" which is a line defined by 2 node id's.Those 2 data types are enough to define the map of the network. i.e. you can plot each link to get thepicture I attach above.There is extra data in that file that you can use or ignore.There are several ways to read the data file. One way is to use fgets() and sscanf().Project 2 – The Game of LifeIn this project, you will build the famous and fascinating system known as "Conway's Game of Life". Life isa "cellular automaton" - a system of cells that live on a grid, where they live, die and evolve according to therules that govern their world. Life is simple - elegant rules give rise to astonishingly complex emergentbehaviour.The Game is played on a 2-D grid, divided into "cells". Each cell is either "dead" or "alive" at a given"generation." The Game consists of a set of rules that describe how the cells evolve from generation togeneration.These rules calculate the state of a cell in the next generation as a function of the states of its neighbouringcells in the current generation. In a 2-D world, a cell's neighbours are those 8 cells vertically,horizontally, or diagonally adjacent to that cell.Conway's set of rules is summarised as:Any live cell with 0 or 1 live neighbour becomes dead because of underpopulationAny live cell with 2 or 3 live neighbours stays alive because its neighbourhood is just rightAny live cell with more than 3 live neighbours becomes dead because of overpopulation 3 Any dead cell with exactly 3 live neighbours becomes alive by reproductionExample (the so-called "glider" ):What does it involve?In this project, you are asked to implement Conway's Game of Life, with the minor restriction that our 2-Dworld is finite. The neighbours of a cell on the edge of the world that would be beyond the edge areassumed dead.The initial state of the world should be read from a file, and the final state should be output to a file. You willneed to decide the format of the file.The size of the world should be configurable and is defined in the initial state file.The number of steps could be taken from the user at the beginning of the program, or the program keepsevolving until it is terminate (hence no predefined numbers of steps).The final state of your program should be saved into the state file so that it can be restored during the nextrun.You will need to decide how to present the world and the evolutionary process.A good (1st) implementation would require you to visualise the Game graphically and display theanimations of each evolution step. The delay used for animations could be predefined in the initialstate file.Resources: Graphics libraryThe SDL library could be a good choice for graphic rendering, but you can use other graphic libraries (e.g.,QT for Project 1) too.SDL - the Simple DirectMedia LayerSDL is a high-level library giving access to the multimedia hardware on your device.A Tutorial of SDL can be found at https://wiki.libsdl.org/TutorialsThere are many existing applications online that use SDL - if you choose to base your code on one, youmust be able to clearly distinguish your work from the original code.Note that many SDL applications use C++; this course requires a C implementation.Installing SDL yourselfFor Linux and Mac, it is easy to install SDL from source and compile on your machine.It is described on the wiki and is quite simple.Download the C source code and extract. 4 Run './configure','./make','./make install' (as root) and it should work.Some extensions, e.g. SDL_image, have to be downloaded and built separately.Building code with SDL:They can be compiled directly into your code using the standard approach for libraries, as requiredie. -lSDL2 -lSDL2_image -lSDL2_ttfExample: An example of SDL is provided on Minerva. 5 Planning Report [20 marks]As part of the project submission, you are required to submit a planning plan. Due to the limited time frame,plan your project carefully. The report submission deadline is designed to force you to consider the scopeand design of the project carefully before implementing the project.Specifically, you should write a design and test plan for your chosen project with the following structure:TitleA chosen title for your project, your name, and your student numberSummaryA short description of your project. Which project choice it is? What your project will do?List of the key modules and a single sentence describing their purpose (~300 words) .Test planA clear statement of testing methodology, and how will you test your application? (~200 words).What are the tests you can design for each iteration of your project? What are the tests for eachmodule?List of all the tests with description. There are a number of ways for documenting tests. Anexample of the expected description is shown in the appendix at the end of this document.Schedule (~ 0.5 page)It is important that you have a realistic plan for how much time you will spend on the project andon each iteration of the design.Write a plan (in tabular form) for what will you do each week until the project is submitted. Thisshould include time off required for revision and exams and your holidays.For each week, write 1-2 sentences describing what you will do.Notes:The report should be written in the style of a technical report. Please be concise. I have indicated advisorypage counts though these are not strict.You do not need to include your code as part of the report. Snippets may be used if appropriate, but only ifillustrating a specific point.6 SubmissionsThere are two submissions for this coursework:The planning report is due at 12 PM BST on Friday, 29 April 2022.The project implementation is due at 12 PM BST on Wednesday, 11 May 2022.You should follow the instructions below on how to prepare your submission. No late submission will beaccepted unless this was agreed in advance.Planning ReportYou need to submit two copies of your report. Submit a hard copy to the SWJTU lecturer/TA/teachingoffice and an electronic copy of your report as a single PDF file to the Turnitin submission portal onMinerva. You need to submit both copies by 12 PM BST on Friday, 29 April 2022. Checks forplagiarism and collusion will be carried on for the report.Project ImplementationSubmit your entire git repository (containing your code, regression test suite, and a Makefile orCMakeList.txt for building the program), along with a ReadMe.txt file containing (1) the URL of your gitrepository, (2) a screenshot of your git commit history and (3) instructions on how to run your program,all in in a single zip (.zip or .gz) file through Minerva.Important notes on the submission:• Write the program in standard C. If you write your code in any other language, it will not beassessed, and you will get a zero mark.• This is an individual project, and you are not supposed to work in groups or pairswith other students.• Be aware that plagiarism in your code will earn you a zero mark and will have very seriousconsequences. If two (or more) students have large portions of their files nearly identical, theywill be accused of plagiarism or collusion. If found guilty, all parties involved will incur thepenalty, regardless of who was the author of the code. For this reason, never show or giveaccess to your code to anyone. Do not help a colleague by sharing your code, or you will bothbe found guilty of collusion.• It is your responsibility to make sure that nobody has access to your code. Lock the sessionif you leave your computer unattended.• Make sure to download and check your submission. Corrupted files, binary files, wrongversions, copies of your project (over the years, we have seen it all), or anything other thanwhat is requested in this document will be considered an invalid submission.• We will not accept submissions other than through Minerva. ...

March 9, 2023 · 11 min · jiezi

关于深度学习:Python图像处理频域滤波降噪和图像增强

图像处理曾经成为咱们日常生活中不可或缺的一部分,波及到社交媒体和医学成像等各个领域。通过数码相机或卫星照片和医学扫描等其余起源取得的图像可能须要预处理以打消或加强噪声。频域滤波是一种可行的解决方案,它能够在加强图像锐化的同时打消噪声。 疾速傅里叶变换(FFT)是一种将图像从空间域变换到频率域的数学技术,是图像处理中进行频率变换的要害工具。通过利用图像的频域示意,咱们能够依据图像的频率内容无效地剖析图像,从而简化滤波程序的利用以打消噪声。本文将探讨图像从FFT到逆FFT的频率变换所波及的各个阶段,并联合FFT位移和逆FFT位移的应用。 本文应用了三个Python库,即openCV、Numpy和Matplotlib。 importcv2 importnumpyasnp frommatplotlibimportpyplotasplt img=cv2.imread('sample.png',0) # Using 0 to read image in grayscale mode plt.imshow(img, cmap='gray') #cmap is used to specify imshow that the image is in greyscale plt.xticks([]), plt.yticks([]) # remove tick marks plt.show() 1、疾速傅里叶变换(FFT)疾速傅里叶变换(FFT)是一种广泛应用的数学技术,它容许图像从空间域转换到频率域,是频率变换的根本组成部分。利用FFT剖析,能够失去图像的周期性,并将其划分为不同的频率重量,生成图像频谱,显示每个图像各自频率成分的振幅和相位。 f=np.fft.fft2(img) #the image 'img' is passed to np.fft.fft2() to compute its 2D Discrete Fourier transform f mag=20*np.log(np.abs(f)) plt.imshow(mag, cmap='gray') #cmap='gray' parameter to indicate that the image should be displayed in grayscale. plt.title('Magnitude Spectrum') plt.xticks([]), plt.yticks([]) plt.show() ...

March 8, 2023 · 3 min · jiezi

关于深度学习:跨平台支持的Blender到底有多强

Blender的由来Blender最后是由荷兰的一个视频工作室开发的外部应用程序,再起初由其程序的次要设计者 Ton Roosendaal于1998年6月将其进一步倒退,并对外公布这个程序。 在2002年9月7日,由Ton为blender一次性筹集十万欧元领取给债权人后,Blender变为开源软件,并由Blender基金会保护和更新。 目前很多企业都退出了Blender基金会,为Blender的倒退提供技术和资金的反对。Blender劣势1.无版权困扰齐全不必放心版权问题,Blender 应用的 GNU GPL 开源协定,让集体有权力将该程序用于任何目标,随便复刻或批改程序,公布程序。 当然,不必放心创作的做作品会被开源,用Blender制作进去的资产属于创作者资产,版权归属于创作者本人。就目前的状况来看,国内软件的版权问题会越来越严格,对于盗版软件的打击的力度也会越来越大。2.跨平台反对:Blender全平台反对,应用了OpenGL得GUI能够在所有支流平台上都体现出统一的显示成果(并且可通过Python脚本来自定义界面)。 意味着无论您是应用 PC 还是 MAC 亦或是 Linux 都能够完满应用Blender。而且Blender的大小只有100多兆,体积玲珑,便于散发。3.功能强大且齐全&顺畅的工作流程:Blender是一个残缺集成的3D创作套件,提供了大量的根底工具,包含建模、渲染、动画 & 绑定、视频编辑、视觉效果、合成、贴图、以及多种类型的物理模仿。 Blender开始 首先能够依据本人的零碎去官网下载Blender的安装包,下载完间接装置即可。2.装置后即可间接关上,首先会弹出一个抉择框,在右面咱们能够看到次要的几个性能,能够选取咱们须要的,也能够间接选取惯例,咱们关上场景后依然能够切换所有性能。3.关上后即可进入场景,关上后的默认布局如下,次要分为3D视图区、工夫线、纲要视图、属性、和最上方的设置。3D视图是咱们的主视图,在主视图右边是抉择、缩放、旋转等常用工具;左上角是抉择形式加选减选,增加物体,批改物体属性等;两头是坐标系、吸附、软抉择等;右侧是物体的一些数据属性;右上角能够切换主视图显示模式;属性视图蕴含渲染属性、输入属性、场景属性、世界属性、物体属性、修改器、物理、材质、纹理等大量属性;4.这个时候,咱们能够开始自在摸索,能够看到在纲要视图中高亮显示,相应的属性也会显示在右下方的属性面板。如果想让面板显示其余内容,能够点击右上角,会列出所有可选面板。Blender能做什么· 建模高效的快捷键、多边形建模(多用于游戏,场景,生物等)、曲面建模(多用于工业,珠宝,等)、丰盛的修改器(非破坏性操作)· 雕刻丰盛的内置笔刷,凋谢的自定义笔刷、动静拓扑、多边形与拓扑的双向转换(顺滑的工作流程)· 动画杰出的骨骼绑定、姿势编辑器、束缚器、驱动器· 蜡笔在3d场景中绘画、洋葱皮传统动画的反对、独立的修改器、笔触雕刻。· 渲染cycles(内置光线追踪渲染器)、NVidia CUDA & AMD OpenCL的GPU渲染、PBR – 基于物理的渲染Physically Based Rendering、降噪、EEVEE(弱小的实时渲染器)· 仿真模仿烟雾、流体、毛发、布料、粒子、刚体。· 视频编辑实时预览、Luma 波形、色度矢量仪和柱状图显示、音频混合、同步、擦除和波形可视化最多 32 个插槽(相似层),用于增加视频、图像、音频、场景、遮罩和成果、速度管制,调整层,过渡,关键帧,过滤器等等。· VFX弱小的节点库用于创立相机特效,色彩校对, 抠像,图片特效等等、反对渲染层、齐全反对图像和视频文件的合成、多线程、静止跟踪、摄影机反求。总结和一些心得如果你是CG爱好者、集体工作者、创意工作者、全流程制作、业余多边形建模、动漫绘画,那么我非常墙裂举荐你应用Blender来进行你的创作。能够不受软件的束缚纵情挥洒你的所有创意,它能够在最短的工夫里高质量的展现你的想法。当然如果你不属于我上述所说的范畴,我依然倡议你至多学习尝试一下Blender,这是一个瞬息万变的世界,Blender肯定会给你带来一个全新的视角。Blender是一款令人兴奋的软件应用,业余、高效、弱小、并且还在高速倒退,目前在各个行业的利用也越来越宽泛,将来的冲破与翻新让人非常期待。*起源:网络,所有图片素材源于网络,仅供学习分享,如侵权,请分割删除。

March 3, 2023 · 1 min · jiezi

关于深度学习:人工智能丹青圣手全平台原生Docker构建StableDiffusionWebui的AI绘画库教程

世间有限丹青手,遇上AI画不成。最近一段时间,可能所有人类画师都得收回一句“既生瑜,何生亮”的感叹,因为AI 绘画通用算法Stable Diffusion未然超神,无需美术根底,也不必经久不息的刻苦练习,只须要一台电脑,人人都能够是丹青圣手。 本次咱们全平台构建基于Stable-Diffusion算法的Webui可视化图形界面服务,基于本地模型来进行AI绘画操作。 本地装置Stable-Diffusion-Webui如果零碎之前装置过Python3.10或者应用过Pytorch深度学习框架,那么举荐间接本地装置Stable-Diffusion-Webui,因为Stable-Diffusion的外围依赖库也是Pytorch。 首先拉取官网的我的项目: git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git随后进入我的项目的目录: cd stable-diffusion-webui官网文档倡议间接在目录中运行shell脚本: ./webui.sh但事实上,shell脚本很容易在过程中报错,该项目标外围代码其实是launch.py,所以实践上,咱们只须要失常运行launch.py文件即可。 首先确保本机的Python版本号大于等于3.10.9 对于Python3.10的装置,请移玉步至:一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上装置配置Python3.10开发环境 ,这里不再赘述。 另外确保Pytorch的版本号大于等于13.1.0,对于Pytorch,请移步:闻其声而知雅意,M1 Mac基于PyTorch(mps/cpu/cuda)的人工智能AI本地语音辨认库Whisper(Python3.10) 随后装置相干的依赖库: pip3 install -r requirements.txt pip3 install -r requirements_versions.txt依赖文件中,有一个库可能会出问题,就是GFPGAN,它是腾讯开源的人脸识别模块,这里举荐应用GFPGAN官方网站(https://github.com/TencentARC/GFPGAN)的装置形式: # Install basicsr - https://github.com/xinntao/BasicSR # We use BasicSR for both training and inference pip install basicsr # Install facexlib - https://github.com/xinntao/facexlib # We use face detection and face restoration helper in the facexlib package pip install facexlib pip install -r requirements.txt python setup.py develop # If you want to enhance the background (non-face) regions with Real-ESRGAN, # you also need to install the realesrgan package pip install realesrgan装置胜利后,最好验证一下: ...

March 3, 2023 · 3 min · jiezi

关于深度学习:一文读懂PaddleSpeech中英混合语音识别技术

语音辨认技术可能让计算机了解人类的语音,从而反对多种语音交互的场景,如手机利用、人车协同、机器人对话、语音转写等。然而,在这些场景中,语音辨认的输出并不总是繁多的语言,有时会呈现多语言混合的状况。例如,在中文场景中,咱们常常会应用一些英文专业术语来表白意思,如“GPS信号弱”、“Java工程师”等,这就给语音辨认技术带来了新的挑战。本次PaddleSpeech公布的中英文语音辨认预训练模型Conformer_talcs能够通过PaddleSpeech封装的命令行工具CLI或者Python接口疾速应用,开发者们能够基于此搭建本人的智能语音利用,也能够参考示例训练本人的中英文语音辨认模型。 示例链接https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/examples/tal_cs/asr1 **疾速体验 **示例音频https://paddlespeech.bj.bcebos.com/PaddleAudio/ch_zh_mix.wav 应用命令行工具CLI 疾速体验语音辨认成果,命令如下: bashpaddlespeech asr --model conformer_talcs --lang zh_en --codeswitch True --input ./ch_zh_mix.wav -v# 终端输入:明天是monday 今天是tuesdayPython 接口疾速体验,代码实现如下: python>>> import paddle>>> from paddlespeech.cli.asr import ASRExecutor>>> asr_executor = ASRExecutor()>>> text = asr_executor( model='conformer_talcs', lang='zh_en', sample_rate=16000, config=None, ckpt_path=None, audio_file='./ch_zh_mix.wav', codeswitch=True, force_yes=False, device=paddle.get_device())>>> print('ASR Result: \n{}'.format(text))ASR Result:明天是 monday 今天是tuesday 中英文语音辨认技术中英文语音辨认难点 中英文语音辨认相较于单语言的语音辨认而言,次要难点如下: 数据量少中英混合数据相较于单语言的数据更少。目前开源的中文语音辨认数据集如WenetSpeech(10000小时有监督,2500小时弱监督,10000小时无监督)、英文语音辨认数据集Giga Speech(10000小时有监督,33000小时无监督)都达到了万小时级别,然而混合的开源中英文语音辨认数据只有SEAME(120小时)和TAL_CSASR(587小时)两个开源数据,混合数据集比单语言数据集会更少。 中英类似发音易混同中英文语音辨认须要一个繁多的模型来学习多种语音,类似但具备不同含意的发音通常会导致模型的复杂度和计算量减少,同时因为它须要辨别解决不同语言的相似发音,因而在模型建模时就须要依照不同语言辨别不同的建模单元。 PaddleSpeech中英文语音辨认计划 模型抉择与介绍本计划应用了一种端到端语音辨认模型Conformer U2模型,其采纳了Joint CTC/Attention with Transformer or Conformer的构造。训练时应用CTC 和 Attention Loss 联结优化,并且通过dynamic chunk的训练技巧,使Shared Encoder可能解决任意大小的chunk(即任意长度的语音片段)。其还应用CTC-Prefix Beam Search和Attention Decoder的形式进行解码,失去最终后果,同时实现了流式和非流式的语音辨认,反对管制推理提早。 本次PaddleSpeech开源的预训练模型,是非流式的端到端辨认Conformer U2模型,chunk中蕴含全副上下文信息,须要整句输入进行辨认。如果你想训练流式中英文语音辨认模型,也能够参考PaddleSpeech的Conformer U2/U2++模型流式语音辨认的示例训练本人的流式中英文语音辨认模型。 ...

March 2, 2023 · 1 min · jiezi

关于深度学习:GTC23-看点预告-从深度学习框架到开发工具百度飞桨携最新成绩单亮相-GTC

NVIDIA GTC 将于 2023 年 3 月 20 日-23 日在线上举办,包含超过 650 场演讲、专家座谈会以及特地流动,涵盖减速计算和开发工具、计算机视觉、对话式 AI/NLP、数据迷信、深度学习、数字孪生和世界仿真、图形和 XR、高性能计算、举荐零碎/个性化等多个主题。寰球范畴的技术专家、开发者、钻研人员、创作者、IT 决策者和企业首领将汇聚于此,理解 AI、减速计算及其他畛域的突破性停顿,以及如何利用这些技术力量推动新一轮的翻新。 NVIDIA 创始人兼首席执行官黄仁勋将在主题演讲中分享 NVIDIA 减速计算平台如何推动 AI、元宇宙、云技术和可继续计算的下一波浪潮。目前已确认参加本届 GTC 的重磅嘉宾包含:Open AI 的联结创始人兼首席科学家 Ilya Stutskever、DeepMind 的创始人兼 CEO Demis Hassabis 等。此外,以百度、阿里巴巴、腾讯、字节跳动、快手、美团、网易为代表的中国互联网科技企业的退出,更为此次大会的嘉宾阵容又添一笔。 近日,国内数据调研机构 IDC 公布《中国深度学习框架和平台市场份额,2022H2》报告。报告显示,Meta PyTorch、百度飞桨 PaddlePaddle、谷歌 TensorFlow 占据中国深度学习开源框架80%以上的市场份额。百度飞桨 PaddlePaddle 开源框架市场份额超过了谷歌 TensorFlow。2021-2022 年,百度飞桨继续位居中国深度学习平台市场综合份额第一。据悉,截至 2022 年 11 月底,百度飞桨平台已凝聚 535 万开发者,创立了 67 万个 AI 模型,服务于 20 万家企事业单位,在工业、能源、交通、农业等畛域大放异彩。 本次 GTC 大会上,来自百度的四位专家将带来精彩的内容分享,涵盖飞桨深度学习框架以及端到端开发套件与工具,还有业界首个同时反对简单算法+超大图+超大离散模型的大规模图学习训练技术 PGLBox。 以下为议题简介。 GTC23 百度演讲举荐 ★演讲题目:飞桨深度学习平台高效反对大模型生产及利用 [S52366]演讲工夫:3月22日即可在线观看演讲人:马艳军,百度 AI 技术生态总经理演讲概要:源于百度业务对人工智能技术的广泛应用,飞桨深度学习平台联合利用继续翻新,研发了业界当先的大规模分布式训练技术。飞桨先后公布了 4D 混合并行训练、端到端自适应分布式训练、超大规模图训练引擎等核心技术,并基于这些技术支持文心大模型的训练和部署。目前,文心大模型曾经笼罩根底大模型、工作大模型、行业大模型的三级体系,飞桨+文心大模型赋能千行百业的智能化降级。 ★演讲题目:PGLBox:百度基于 GPU 的超大规模图模型训练框架[SE51302]演讲工夫:3月22日  3:30PM演讲人:焦学武,百度主任架构师、百度 MEG 商业模型中台技术负责人演讲概要:PGLBox 是百度研发的基于 GPU 的大规模图模型训练框架,反对数百亿节点和边的图模型全 GPU 训练,已在百度宽泛部署。与传统的基于 CPU 的分布式解决方案相比,PGLBox 能够在雷同的老本下取得 28 倍的训练减速。相比业界支流的分布式 CPU 解决方案,PGLBox 具备超高性能、超大规模、算法丰盛、灵便易用、落地宽泛等劣势。 ...

March 1, 2023 · 1 min · jiezi

关于深度学习:使用手工特征提升模型性能

本文将应用信用守约数据集介绍手工特色的概念和创立过程。 通过对原始数据进行手工的特色工程,咱们能够将模型的准确性和性能晋升到新的程度,为更准确的预测和更理智的业务决策铺平道路, 能够以前所未有的形式优化模型并晋升业务能力。 原始数据就像一个没有图片的拼图游戏——但通过特色工程,咱们能够将这些碎片拼在一起,尽管领有大量数据的确是寻求建设机器学习模型的金融机构的宝库,但同样重要的是要抵赖并非所有数据都提供信息。并且手工特色是人工设计进去,每一步操作可能说出理由,也带来了可解释性。 特色工程不仅仅是抉择最好的特色。它还波及缩小数据中的乐音和冗余,以进步模型的泛化能力。这是至关重要的,因为模型须要在看不见的数据上体现良好能力真正有用。 数据集形容本文中形容的数据集通过匿名解决和屏蔽,以保护客户数据的机密性。特色可分类如下: D_* = 拖欠变量 S_* = 收入变量 P_* = 领取变量 B_* = 均衡变量 R_* = 危险变量总共有 100 个整数特色和 100 个浮点特色代表过来 12 个月客户的状态。该数据集蕴含无关客户报表的信息,从 1 到 13 不等。客户的每张信用卡报表之间可能有 30 到 180 天的距离(即客户的信用卡报表可能缺失)。每个客户都由一个客户 ID 示意。customer_ID=0的客户前5条的样本数据如下所示: 在 700 万个 customer_ID 中,98% 的标签为“0”(好客户,无默认),2% 的标签为“1”(坏客户,默认)。 数据集很大,所以咱们应用cudf来减速解决,如果你没有装置cudf,那么应用pandas也是一样的 # LOAD LIBRARIES import pandas as pd, numpy as np # CPU libraries import cudf # GPU libraries import matplotlib.pyplot as plt, gc, os df = cudf.read_parquet('./data.parquet')特色生成办法有数百种想法可用于生成特色;然而咱们还确保这些特色有助于进步模型的性能,下图显示了特色工程中应用的一些根本办法: ...

March 1, 2023 · 3 min · jiezi

关于深度学习:推荐系统八算法实践总结V2排序学习框架特征提取标签获取方式以及京东推荐算法精排技术实战

0.前言「排序学习(Learning to Rank,LTR)」,也称「机器排序学习(Machine-learned Ranking,MLR)」 ,就是应用机器学习的技术解决排序问题。自从机器学习的思维逐渐渗透到信息检索等畛域之后,如何利用机器学习来晋升信息检索的性能程度变成了近些年来十分热门的钻研话题,因而产生了各类基于机器学习的排序算法,也带来了搜索引擎技术的成熟和倒退,现在,Learning to Rank曾经成为搜寻、举荐和广告畛域十分重要的技术手段。 本文咱们首先介绍排序学习的三种次要类别,而后具体介绍举荐畛域最罕用的两种高层排序学习算法框架:BPR和LambdaMART。因为排序学习的算法和实际大都来源于信息检索,一些实践也必须从信息检索的畛域说起,所以本文也会波及一些的信息检索、搜寻方面的理论知识,但重点仍然会放在举荐畛域排序学习的利用思路。 0.1 排序学习传统的排序办法可粗略分为基于类似度和基于重要性进行排序两大类,晚期基于相关度的模型,通常利用 query 和 doc 之间的词共现个性(如布尔模型)、VSM(如 TF-IDF、LSI)、概率排序思维(如BM25、LMIR)等形式。基于重要性的模型,利用的是 doc 自身的重要性,如 PageRank、TrustRank 等。在之前《基于内容的举荐算法》和《文本内容分析算法》两篇文章中,稍有波及其中的知识点。 传统的检索模型所思考的因素并不多,次要是利用词频、逆文档频率和文档长度、文档重要度这几个因子来人工拟合排序公式,且其中大多数模型都蕴含参数,也就须要通过一直的试验确定最佳的参数组合,以此来造成相关性打分。这种形式非常简单高效,然而也同时存在很多问题 很难交融多种信息手动调参工作量太大,如果模型参数很多,手动调参的可用性非常低可能会过拟合LTR则是基于特色,通过机器学习算法训练来学习到最佳的拟合公式,相比传统的排序办法,劣势有很多: 能够依据反馈主动学习并调整参数能够交融多方面的排序影响因素防止过拟合(通过正则项)实现个性化需要(举荐)多种召回策略的交融排序举荐(举荐)多指标学习(举荐)1.排序学习框架排序学习是一个典型的有监督机器学习过程,咱们别离简略来看一下排序学习在搜寻以及举荐畛域中的框架和根本流程。 1.1 根本流程在信息检索中,对每一个给定的查问-文档对,抽取特色,通过日志开掘或者人工标注的办法取得实在数据标注。而后通过排序模型,使得输出可能和理论的数据类似。 排序学习在古代举荐架构中处于十分要害的环节,它能够实现不同召回策略的对立排序,也可将离线、近线、在线的举荐后果依据依据用户所处的场景进行整合和实时调整,实现打分重排并举荐给用户。 无论是搜寻还是举荐,排序学习模型的特征提取以及训练数据的获取是十分重要的两个过程,与常见的机器学习工作相比,也有很多非凡的中央,上面咱们简略介绍这两个过程中可能须要思考的问题。 1.2 特征提取在排序学习模型中,文档都是转化成特征向量来表征的,这便波及一系列文本特征提取的工作,咱们这里简略介绍一些可能用到的特征提取办法以及罕用的特色类型。 文档的特色通常能够从传统排序模型取得一些相干特色或者相关度打分值,所以可分为两种类型: 一是文档自身的特色,比方Pagerank值、内容丰盛度、spam值、number of slash、url length、inlink number、outlink number、siterank,用户停留时间、CTR、二跳率等。二是Query-Doc的特色:文档对应查问的相关度、每个域的tf、idf值,bool model,vsm,bm25,language model相关度等。也能够对文档分域,如对于一个网页文本,特色所在的文档区域能够包含body域,anchor域,title域,url域,whole document域等。 通过各个域和各种特色,咱们能够组合出很多特色,当然有些特色是正相干有些是负相关,这须要咱们通过学习过程去选取优化。 1.3 标签获取特色能够通过各种形式进行提取,然而Label的获取就不是那么容易了。目前次要的形式是人工标注或者日志提取,需注意的是,标注的类型与算法抉择以及损失函数都有很大关系。 1.3.1「人工标注」人工标注比拟灵便,然而若须要大量的训练数据,人工标注就不太事实了,人工标注次要有以下几种标注类型: 「单点标注」单点标注只关注单点,不思考互相分割,单点标注又分三种不同的标注形式:优缺点 长处:标注的量少,为O(n) 毛病:难标,不好对立 对于每个查问文档间接打上相对标签,即相关度得分二元标注相干和不相干五级标注依照相关度划分五级(同NDCG指标):即“最相干”、“相干”、“中性”、“不相干”、最不相干”,通常在模型训练时会用数字来示意,如1~5「两两标注」优缺点 长处:标注起来比拟不便 毛病:标注量大,应该有 对于一个查问Query,标注文档d1比文档d2是否更加相干,即「列表标注」优缺点 长处:绝对于下面两种,标注的成果会很好 毛病:工作量微小,人工简直无奈实现(整体的文档数量太大) 对于一个查问Query,将人工现实的排序全副标好1.3.2「日志抽取」当搜索引擎搭建起来之后,就能够通过用户点击记录来获取训练数据。对应查问返回的搜寻后果,用户会点击其中的某些网页,咱们能够假如用户优先点击的是和查问更相干的网页,只管很多时候这种假如并不成立,但理论教训表明这种获取训练数据的办法是可行的。 比方,搜寻后果A、B、C别离位于第1、2、3位,B比A地位低,但却失去了更多的点击,那么B的相关性可能好于A。「这种点击数据隐含了Query到文档的相关性好坏。所以个别会应用点击倒置的高下位后果作为训练数据」。 然而日志抽取也存在问题: 用户总是习惯于从上到下浏览搜寻后果用户点击有比拟大的噪声个别头查问(head query)才存在用户点击1.4排序学习设计办法排序学习的模型通常分为「单点法(Pointwise Approach)」、配对法(Pairwise Approach)「和」列表法(Listwise Approach)三大类,三种办法并不是特定的算法,而是排序学习模型的设计思路,次要区别体现在损失函数(Loss Function)、以及相应的标签标注形式和优化办法的不同。 三种办法从ML角度的总览: 更多内容参考:举荐零碎四:精排-详解排序算法LTR (Learning to Rank): poitwise, pairwise, listwise相干评估指标,超具体常识指南。 ...

February 28, 2023 · 1 min · jiezi

关于深度学习:Mel频谱和MFCC深入浅出

前言在音频畛域,mel频谱和mfcc是十分重要的特色数据,在深度学习畛域通常用此特色数据作为网络的输出训练模型,来解决音频畛域的各种分类、拆散等业务,如端点侦测、节奏辨认、和弦辨认、音高追踪、乐器分类、音源拆散、回声打消等相干业务。 当然,针对深度学习音频畛域的业务,不是用下这两个特色、选几个网络、打个标签,放数据训练就完事了, 仅仅基于mel频谱和mfcc这两个特色,解决好上述业务某些状况下还是远远不够的,相熟这些特色的外在逻辑性、衍生细节和延展,能力更好的联合深度学习解决业务问题。 上面解说mel频谱和mfcc特色的算法流程和一些细节、延展,这些细节从部分角度来看,都会影响到最终特色出现的细节差别,这些差别放大到模型训练后果的准确性、鲁棒性上怎么样是十分值得钻研的,某些状况下可能会有质的变动,质的变动无论正向还是负向都是值得关注的,最怕的是没变动;同时,一些问题的延展从狭义角度来看,带来不同的特色组合、网络结构设计思考等也是解决业务问题十分重要的思维源泉。 算法流程设 sr 为采样率,fftLength 为帧长度,slideLength 为滑动长度上面是一张mel频谱和mfcc的大略算法流程图。 1. 预减轻(Pre-emphasis)如流程图所示的第1步,属于信号的预处理,弥补高频重量损失,晋升高频重量,个别状况下能够疏忽此步骤,属于信号的简略加强,对特色有肯定的晋升成果。公式如下 $$x[n]=x[n]-\alpha x[n-1]$$ \(\alpha\)个别取0.97 公式属于差分一阶即高通滤波器。2. 分帧(Frame)事实中大多数信号都是非安稳的,但大多数短时间内能够近似看做是安稳的,能够用短时傅里叶变换体现非安稳信号频域特色。 个别语音中采纳10ms~30ms左右,噪音中能够更长一些64ms~256ms。 分帧波及到前后重叠(overlap),个别状况下以滑动帧长的1/4或1/2(前后重叠3/4或1/2)进行,即\(slideLength=\cfrac{fftLength}4或\cfrac{fftLength}2\)。 3. 加窗(Window)加窗目标是缩小频谱泄露,升高透露频率烦扰,晋升频谱成果,默认不解决即加矩形窗(Rect),烦扰透露较重大,个别状况下加Hann窗,针对大多数信号都有不错的成果。公式如下 $$w(n)=0.5\left( 1-\cos \left(2\pi \cfrac n{N} \right)\right) , 0 \le n \le N$$ Hann为余弦窗,N示意阶数。4. 短时傅里叶变换(STFT)分帧加窗傅里叶变换即短时傅里叶变换。公示如下 $$X(\tau,f)=\int_{-\infty}^\infty x(t)w(t-\tau)e^{-j2\pi f t}dt $$ $$X(m,k)=\sum_{n=0}^{N-1} x[n]W[n-m]e^{\frac{-j2\pi kn}{N} }$$ 设数据长度为 dataLength, t=\(\begin{cases} \cfrac{(dataLength-fftLength)}{slideLength}+1, &无填充 \ \cfrac{dataLength}{slideLength}+1 , &填充fftLength\end{cases}\)STFT属于规范的数学变换,为复数域,尺寸为 $t*fftLength$,为示意辨别,个别的如$|X(m,k)|$取模,尺寸为$t*(fftLength/2+1)$ 示意为STFT频谱,有以下类型频谱。 \(|X(m,k)|\),STFT幅值频谱 \(|X(m,k)|^2\),STFT功率频谱 \(\log(|X(m,k)|)\),STFT dB(分贝)频谱 \(20\log\left(\cfrac{|X(m,k)|}{fftLength}\right)\),STFT规范dB频谱注: dB频谱属于绝对谱,加减乘除对频率绝对dB值没影响,规范dB频谱相当于建设一个基准参考线,不便剖析频谱和量化,大多数频谱示例都是此种类型。深度学习中应用dB谱训练大多数要优于其它数值类型的频谱。5. 滤波器组过程(Filter bank)此过程是计算mel频谱要害局部和mfcc的重要一步。流程图如下 mel刻度(scale)是一种基于人耳听觉设计的log压缩刻度,人耳针对低频比拟敏感,高频不太敏感,比方110hz和116hz个别人都能辨别进去,但4000hz和4100hz大部分分不进去。mel刻度和hz的转换公式如下$$\begin{cases} mel=2595\log_{10}(1+\cfrac{hz}{700}) \\ hz=700(10^{\frac{mel}{2595}}-1) \end{cases}$$ ...

February 28, 2023 · 2 min · jiezi

关于深度学习:独立产品灵感周刊-DecoHack-049-开发者如何学习UI设计

本周刊记录乏味好玩的独立产品设计开发相干内容,每周公布,往期内容同样精彩,感兴趣的搭档能够点击订阅我的周刊。为保障每期都能收到,倡议邮件订阅。欢送通过 Twitter 私信举荐或投稿。 产品举荐1. method.ac这个网站非常适合没有做过 UI 设计的老手来玩一下,如果你想学 UI 设计,能够玩一下,最根底的贝塞尔曲线的用法,布尔运算,色彩,字体,形态。这些都是最通用的设计根底能力,所有的界面设计软件都是这样做的。十分好的一个小游戏。 2. MuscleWiki这个网站内容做的不错,能够抉择你想要锤炼的部位,而后看能够如何训练,视频领导十分清晰。 3. Numbeo - Cost of Living这个网站是世界上最大的生存老本数据库。 一个众包寰球生存品质数据数据库:住房指标、感知犯罪率、医疗保健品质、交通品质和其余统计数据。另外 city-data 这个网站能够看到美国的一些具体数据,人口散布等等。搬家移民换城市很有用的参考。 4. Losethevery这个网站十分有意思,能够用来进步本人的英文写作水平,从不应用 “Very” 开始,能够看到很多“Very xxxxxx” 的高级代替词。不得不说 It’s a very good website. 5. eggspensive之前举荐过一个网站,能够显示美国各地的披萨价格,这个孪生网站,是用来看美国各个中央鸡蛋的价格跟踪美国每个沃尔玛的鸡蛋价格。不得不说硅谷西海岸的鸡蛋是真贵。 6. 发票盒子发票盒子能够帮你主动实现发票的收集、分类、整顿工作,主动排重,填报销单,输入Excel清单,PDF拼合A4打印,几乎是职场报销同学的救星。从发现票据治理的痛点、调研、开发、到测试、上线、经营,发票盒子的团队单干十分默契和成熟,他们立足长沙,专一职场效率工具,履行近程办公,产品也屡次获奖,他们是我设想中「小而美」的完满诠释。更多能够看这篇文章《对话开发者第25期:一个“开发给女朋友用的App”的故事》 开源我的项目1. AppFlowy.io开源的 Notion 代替计划 ,界面做的这么粗劣的开源我的项目不多了,重视隐衷和开源软件的敌人能够试试看。 2. wttr.in这个开源我的项目很有意思,用控制台看天气预报,输出 "curl wttr.in/xxx"就能够。也能够在官网体验,间接在网址前面跟上你城市的名字就能够。开发者福音⛅ The right way to check the weather. 3. Pomotroid很难看的番茄时钟。Vue 写的番茄计时器,反对自定义工夫、回合数、提示音、桌面告诉等性能。反对 Mac,Windows,Linux。 4. 第三方的 ChatGPT 桌面利用这是个开源我的项目,反对 Mac, Windows and Linux,比拟好用的是这个客户端能够像 Telegram 机器人指令一样工作,帮忙你疾速填充自定模型,来让 ChatGPT 依照你想要的形式去工作。能够不便从 awesome-chatgpt-prompts 来寻找乏味的性能来导入到利用。也能够应用 Sync Prompts,来一键同步所有。 ...

February 27, 2023 · 1 min · jiezi

关于深度学习:MegEngine-使用小技巧使用-Netron-实现模型可视化

近期社区有多个同学问,如何查看 MegEngine 训练出的模型网络结构。其实在去年 8 月,MegEngine 就曾经集成到了 Netron 平台上。 目前 Netron 已反对 MegEngine 模型:TracedModule 及 C++ 计算图两种构造。 二者的实现办法完全一致:只需间接拖拽本地模型文件到 网页版 netron,便可失去残缺的模型结构图,并点击查看每层构造的细节参数。 如下图: 当然大家也能够通过「netron 客户端」或「Python Server」的形式,失去同样后果。 具体操作指南见文档: MegEngine 模型可视化 - MegEngine 1.12 文档www.megengine.org.cn/doc/stable/zh/user-guide/tools/viewmodel.html 但在实操时,有几点须要留神的中央:TracedModule 格局Netron 须要是 6.0.0 及以上版本,为了保障最优体验成果,倡议应用最新版本;保留 TracedModule 模型文件时须要用 .tm 作为文件后缀,举荐应用 megengine.save 和 megengine.load 保留和加载 TracedModule;因为 tm 格局的模型有很多子 module ,为了让大家更好的理解他们之间的链接关系,所以在做可视化展现时,各子图是全副开展的,以一张图来残缺展现模型构造。C++ 格局Netron 应用 6.5.3 及以上版本,为了保障最优体验成果,倡议应用最新版本;MegEngine 版本:v1.10.0 及以上;欢送大家通过以下样例模型,试用该性能~ TracedModule 序列化文件(即 .tm 文件): 样例模型C++ 序列化文件(即 .mge):样例模型附:更多 MegEngine 信息获取,您能够:查看文档和 GitHub 我的项目,或退出 MegEngine 用户交换 QQ 群:1029741705。欢送参加 MegEngine 社区奉献,成为 Awesome MegEngineer,荣誉证书、定制礼品享不停。 ...

February 24, 2023 · 1 min · jiezi

关于深度学习:深度学习Word2Vec

[TOC] 前言Word2Vec是一种用于将自然语言文本中的单词转换为向量示意的技术,它被广泛应用于自然语言解决和深度学习畛域。本文将介绍Word2Vec的基本原理、利用场景和应用办法。 基本原理Word2Vec是由Google的Tomas Mikolov等人在2013年提出的,它是一种浅层神经网络模型,能够通过学习大量的文本数据,将每个单词映射到一个向量空间中的一个点,并且可能保留词语之间的语义关系和语法关系。 Word2Vec分为两种模型:CBOW(Continuous Bag-of-Words)和Skip-gram。CBOW模型是通过上下文单词来预测指标单词,而Skip-gram模型是通过指标单词来预测上下文单词。这两种模型都是基于神经网络的语言模型,通过训练神经网络来学习每个单词的向量示意。 具体来说,Word2Vec会将每个单词映射到一个高维向量空间中的一个点,而每个维度示意单词的某个语义特色。例如,某个维度可能示意单词的“性别”,某个单词的该维度数值较大,则示意该单词更偏差于“男性”;反之,则示意该单词更偏差于“女性”。 CBOW和Skip-gram模型的区别 优缺点CBOW模型 CBOW模型的训练指标是,对于给定的上下文单词,预测核心单词。具体来说,对于给定的一个窗口,CBOW模型将窗口内的上下文单词作为输出,预测核心单词。例如,对于上面的句子:"The quick brown fox jumps over the lazy dog."如果咱们将窗口大小设置为2,那么CBOW模型的训练指标就是,在已知“quick”、“brown”、“jumps”和“over”这4个单词的状况下,预测“fox”这个单词。因而,CBOW模型的输出是窗口内的上下文单词的向量示意的平均值,输入是核心单词的向量示意。CBOW模型的长处是,训练速度绝对较快,能够解决大规模的语料库,并且对常见单词的解决成果较好。毛病是,对于类似的单词,它们的向量示意可能过于类似,因而可能无奈很好地区分它们。Skip-gram模型 Skip-gram模型的训练指标是,对于给定的核心单词,预测窗口内的上下文单词。具体来说,对于给定的一个核心单词,Skip-gram模型将核心单词作为输出,预测窗口内的上下文单词。例如,对于上面的句子:"The quick brown fox jumps over the lazy dog."如果咱们将窗口大小设置为2,那么Skip-gram模型的训练指标就是,在已知“fox”这个单词的状况下,预测“quick”、“brown”、“jumps”和“over”这4个单词。因而,Skip-gram模型的输出是核心单词的向量示意,输入是窗口内的上下文单词的向量示意。Skip-gram模型的长处是,能够更好地捕获类似单词之间的差别,因而能够更好地区分它们。毛病是,因为须要预测窗口内的上下文单词,因而训练速度绝对较慢,对于大规模的语料库须要较长时间的训练。总结 CBOW模型和Skip-gram模型是Word2Vec中最罕用的两个模型。CBOW模型实用于大规模语料库、常见单词解决成果较好、训练速度较快的状况;Skip-gram模型实用于须要辨别类似单词、对于类似单词之间的差别解决成果更好的状况,但训练速度绝对较慢。在理论利用中,依据具体任务的需要和数据的特点,能够抉择适合的模型进行训练利用场景Word2Vec曾经成为自然语言解决中一个重要的技术,并且在多个畛域失去了广泛应用,例如文本分类、语音辨认、机器翻译等。以下是Word2Vec的几个次要利用场景: 文本分类:应用Word2Vec将文本转换为向量示意,而后应用深度学习模型(例如卷积神经网络、循环神经网络)对文本进行分类。语音辨认:应用Word2Vec将语音信号中的单词转换为向量示意,而后应用深度学习模型对语音信号进行辨认。机器翻译:应用Word2Vec将源语言和目标语言中的单词都转换为向量示意,而后应用深度学习模型进行翻译。举荐零碎:应用Word2Vec将用户和商品都转换为向量示意,而后应用向量之间的类似度来进行举荐。应用办法数据预处理:将原始文本数据进行分词、去停用词、词干提取等预处理操作,将文本转换为可供训练的格局。训练Word2Vec模型:应用预处理好的文本数据训练Word2Vec模型,能够抉择应用CBOW或Skip-gram模型。获取单词向量:训练好的Word2Vec模型能够将每个单词映射到向量空间中的一个点,获取每个单词的向量示意。利用单词向量:应用获取到的单词向量进行相干的工作,例如文本分类、语音辨认、机器翻译等。学习word2Vec 须要留神什么了解Word2Vec的原理:Word2Vec是一种基于神经网络的语言模型,它能够将单词映射到一个高维向量空间中,并通过训练来学习这些向量的散布,从而使得具备类似语义的单词在向量空间中的间隔更近。在学习Word2Vec之前,须要先理解它的原理和基本概念。抉择适合的训练数据:Word2Vec的训练数据通常是大规模的文本语料库,须要抉择适宜本人的语料库进行训练。同时,为了取得更好的成果,训练数据应该具备肯定的多样性和代表性。调整超参数:Word2Vec的成果与超参数的抉择密切相关,例如训练的窗口大小、向量维度、迭代次数等。不同的超参数设置会对最终的向量示意产生不同的影响,因而须要依据理论需要进行正当的调整。留神预处理数据:Word2Vec训练数据须要进行肯定的预处理,例如分词、去除停用词、转换为小写等,以便于模型对文本数据进行解决。抉择适合的算法:Word2Vec有两种算法,别离是Skip-Gram和CBOW,两种算法的成果和利用场景不同。在理论利用中须要依据需要抉择适合的算法。解决词汇表的大小:在理论利用中,词汇表的大小会间接影响Word2Vec的成果和性能,因而须要思考如何对词汇表进行管制和裁剪。评估Word2Vec的成果:Word2Vec的成果通常通过计算词向量之间的类似度来评估。须要留神的是,类似度的计算方法和评估规范可能会因具体任务的不同而有所差别。因而须要依据具体任务抉择适合的评估办法和指标。代码Word2Vec的实现能够应用多种深度学习框架,例如TensorFlow、PyTorch、Keras等。以下是一个应用Python和gensim库实现Word2Vec的简略例子: from gensim.models import Word2Vecsentences = [['this', 'is', 'a', 'sentence'], ['another', 'sentence']]model = Word2Vec(sentences, min_count=1)vector = model['sentence']以上代码中,咱们首先导入gensim库中的Word2Vec模型,而后将待训练的文本数据传入模型中进行训练。训练实现后,咱们能够获取某个单词的向量示意,例如获取单词"sentense"的向量示意。

February 22, 2023 · 1 min · jiezi

关于深度学习:隐私计算技术|非平衡隐私集合求交-Unbalanced-PSI-协议介绍

前言隐衷汇合求交(Private Set Intersection,即 PSI)是一个特定的平安多方计算(Multi-Party Computation, 即 MPC)问题,其问题能够简略了解为:Alice 输出汇合Bob 输出汇合 单方执行 PSI 协定能够失去 Alice 和 Bob 两者的交加,同时不在交加范畴内的局部是受爱护的,即 Alice 和 Bob 无奈学习出交加以外的任何信息。隐衷汇合求交 (PSI) 协定有很多分类办法,依照底层依赖的明码技术分类次要包含:基于公钥明码的 PSI 计划,包含:基于密钥替换(DH: Diffie-Hellman)的 PSI 计划和 RSA 盲签名的 PSI 计划;基于不经意传输(OT: Oblivous Transfer)的 PSI 计划;基于通用 MPC 的 PSI 计划,例如基于混同电路(GC: Garbled Circuit)的 PSI 计划;基于同态加密(Homomorphic Encryption)的 PSI 计划;依照单方待求交汇合大小是否相等进行分类,可分为:均衡的 PSI(Balanced PSI):两方汇合大小靠近,即非均衡的 PSI (Unbalanced PSI):两方汇合大小相差加大,即本文先介绍非均衡隐衷汇合求交 (Unbalanced PSI) 的需要和利用场景,而后介绍相干的背景常识,最初介绍两种专门的 Unbalanced PSI 协定。非均衡隐衷汇合求交需要和利用场景图 1 Unbalanced PSI 示意大多数的 PSI 协定思考的是两方数据汇合大小根本相等的状况,在一些场景下求交单方的数据集大小差别较大,具体是指一方汇合很小,一方汇合很大的求交状况,即这种场景的隐衷汇合求交称为:非均衡隐衷汇合求交 (Unbalanced PSI)。寻找联系人当一个用户注册应用一种新的服务(如微信、Whatsapp 等)的时候,从用户的现有联系人中寻找有哪些曾经注册了同类的服务是一种在大多数状况下十分必要的操作。通过将用户的联系人发送给服务提供商能够无效地实现这项性能,然而与此同时用户的联系人信息,一种在大多数状况下被认为是隐衷的信息,也被裸露给服务提供商了。因而在这种场景下,将用户的联系人信息作为一方的输出,将服务提供商的所有用户信息作为另一方的输出来进行 PSI 协定能够实现发现联系人的性能,而且能够避免交加以外的信息泄露给任何一方。口令安全检查通过与曾经泄露的口令数据集比照,能够断定用户口令的安全性。用户如果间接将口令传输给服务器的话,用户口令的隐衷不会失去满足。为爱护用户口令隐衷,零碎应用隐衷求交技术来保障既帮忙检测口令是否平安,同时又不泄露用户口令隐衷。例如:Google 开发的 Password Checkup,微软的 Password Monitor。联邦学习样本对齐在联邦学习发动训练之前,必须基于单方的数据进行 PSI,应用单方共有的用户信息(例如用户 ID)找出交加,从而对应两方数据的特色和标签,在对齐的数据集上进行模型训练才有意义。下面几种典型利用中,两方的数据量差别比拟大,例如,10w vs 10 亿的隐衷汇合求交。通用的 balanced PSI 协定在两方汇合大小差别大的状况下,两方的计算量基本相同,跟大数据集的汇合大小成线性关系,数据集小的一方也要依照大数据集的规模配置计算和通信资源,对于数据集小的一方计算资源需要和耗费太大。一些研究成果对于 Unbalanced PSI 这种比拟常见而有理论利用价值的场景做优化,并且获得了较好的后果。图 2  DH PSI 协定流程以基于密钥替换 (DH: Diffie-Hellman) 的 PSI 计划为例,介绍在两方数据集差别很大时的计算。如图 2 中 DH-PSI 的流程,包含 4 个步骤:alice 对计算次幂指数发送到 bobbob 对计算次幂指数发送到 alicebob 对计算次幂指数发送给 alicealice 对计算次幂指数能够看到 alice 数据集远小于 bob 数据集的状况下,alice 和 bob 的计算量都是alice 要依照 bob 的数据集规模配置计算资源,对 alice 要求太高。2. 背景常识2.1 不经意伪随机函数 (OPRF)伪随机函数 (PseudoRandom Function PRF) 是密码学中的根底函数,与伪随机生成器 (PseudoRandom Generator PRG)、伪随机置换 (PseudoRandom Permuation PRP) 等根底组件之间也能够互相转换。伪随机函数的定义能够参见下图,依据密钥和输出失去后果在不晓得密钥的假如下和随机数差别能够疏忽。图 3 PRF 定义最典型的 PRF 利用是在传输层平安协定 (Transport Layer Security TLS) 中,TLS 握手 (handshake) 阶段通过协商失去预主密钥 (PreMaster Key),预主密钥通过 PRF 计算失去主密钥 (Master Key),主密钥再应用 PRF 失去通信加密和认证密钥。图 4 OPRF 协定框架不经意伪随机函数 (Oblivious PseudoRandom Function OPRF) 是客户端和服务端之间计算伪随机函数 (PRF) 的两方协定。服务端提供伪随机函数 (PRF) 的密钥客户端提供输出协定完结后客户端失去不经意伪随机函数 (OPRF) 有很多构造方法,如:RSA、DH 和不经意传输 (Oblivious Transfer)。2.1.1 基于 OPRF 的 PSI 框架文献 [HL08] 提出了基于 OPRF 实现 PSI 协定,能够形象为如下图所示的协定流程。图 5 基于 OPRF 结构 PSI 协定的通用框架图 3 协定中 bob 产生密钥并对数据集计算alice 和 bob 执行上节提到的不经意伪随机函数,失去数据集的 OPRF 后果通过比拟两方汇合的 PRF 值,失去交加后果。2.1.2 OPRF 相干规范IETF 草案《应用素数阶群的 OPRF》给出了基于素数阶群结构 OPRF 的办法,定义了函数名称、参数、数据格式和规范向量。图 6 基于素数阶群 DH 结构 OPRFIETF 草案《应用素数阶群的 OPRF》协定过程如下:客户端随机抉择 将输出映射到群中的元素计算发送给服务端。服务端接管到后,计算发送给客户端。客户端接管到后,计算失去计算IETF 草案《应用素数阶群的 OPRF》将下面三个步骤中的计算局部定义为三个函数(Blind,Evaluate 和 Finalize),并给出了具体的函数名称、参数和规范向量。IETF 草案《应用素数阶群的 OPRF》给出了候选的素数阶群,包含:ristretto255, SHA-512decaf448, SHAKE-256P-256, SHA-256P-384, SHA-384ristretto 是将非素数阶的 ecc 群转换为素数阶群的一种办法,ristretto255 是将 curve25519 (阶是 8 乘以一个素数) 的点群转换为素数阶群的实现。除了 ristretto255 外,其余阶为大素数或具备大素数阶子群的椭圆曲线也能够作为候选,例如比特币应用的 secp256k1 曲线或商密 SM2 定义的曲线也可作为候选。文献 [CMGD+21] 及其开源实现 APSI 建已应用 FourQ 曲线。2.2 全同态加密 (Full Homomorphic Encryption FHE)全同态加密 (Full Homomorphic Encryption FHE) 是一种弱小的明码原语,能够对加密的数据执行任意 (算术或二进制) 电路运算,电路运算后的后果还是加密的,能够应用解密密钥进行解密。然而全同态加密个别计算开销比拟大,罕用的全同态加密计划是分级全同态加密计划 (leveled Full Homomorphic Encryption FHE),即加密计划的参数抉择只容许执行无限的乘法深度。全同态加密 (Full Homomorphic Encryption FHE) 可用于设计隐衷汇合求交协定和隐匿查问协定,在通信量和计算上都有加到的劣势。疾速非均衡隐衷求交协定文献 [RA18] 中给出了半诚恳模型下的疾速非均衡隐衷汇合求交协定,并给出了实现参考和性能。[RA18] 的 PSI 协定能够看做图 5 OPRF 结构 PSI 协定的一种具体实现办法,其中 OPRF 协定采纳 2.3 节中形容的 OPRF 协定。协定过程中 bob 产生密钥并对数据集计算alice 和 bob 执行上节提到的不经意伪随机函数,失去数据集的 OPRF 后果图 7 [RA18] Unbalanced PSI 协定流程该协定分为离线和在线阶段:离线阶段bob 端对数据集 计算发送给 alice,alice 对接管到的数据进行缓存。bob 端的计算量次要是次幂运算。在线阶段alice 和 bob 对数据集执行不经意伪随机函数,alice 端失去。比拟两个汇合失去交接后果。alice 端的计算量次要是次幂运算,bob 端的计算量次要是次幂运算。总体计算量方面,[RA18] Unbalanced PSI 比 dh-psi 缩小一半。[RA18] Unbalanced PSI 在线阶段只和小数据集的大小相干。思考到在线阶段执行很快。能够看到下面的协定更适宜 Unbalanced PSI 的情景。0**4基于 FHE 的 Unbalanced PSI 协定文献 [CLR17] 给出了应用全同态 (Level Full Homorphic Encryption) 结构 PSI 的办法,并给出了优化办法。[CHLR18] 中提出在预处理阶段应用不经意随机函数 (OPRF) 对原始数据进行平安增强。[CMGD+21] 给出了具体的参数优化办法,缩小了在线阶段计算和通信量,并给出了和 [RA18] 的性能比照。图 8 FHE PSI 协定流程FHE PSI 协定流程:数据预处理阶段alice 和 bob 在线执行 OPRF 协定,alice 失去数据集的 OPRF 后果在线求交阶段alice 计算局部幂指数的 FHE 密文,发送给 bob;bob 计算失去所有须要幂指数,计算插值多项式的密文后果发送给 alice;alice 对插值多项式的密文后果解密,如果解密为 0,则FHE 的 Unbalanced PSI 和 [RA18] 中的 Unbalanced PSI 相比,劣势在于不须要传输大数据集的相干数据,在执行完不经意伪随机函数 (OPRF) 后,通过减少一轮查问交互,即 FHE 的查问密文和返回,失去交加。参考文献[HL08] Efficient protocols for set intersection and pattern matching with security against malicious and covert adversaries[CT10] Practical Private Set Intersection Protocols with Linear Computational and Bandwidth Complexity[CKT10] Linear-Complexity Private Set Intersection Protocols Secure in Malicious Model[KLSAP17] Private Set Intersection for Unequal Set Sizes with Mobile Applications[RA18] Faster Unbalanced Private Set Intersection[CLR17] Fast Private Set Intersection from Homomorphic Encryption[CHLR18] Labeled PSI from Fully Homomorphic Encryption with Malicious Security[CMGD+21] Labeled PSI from Homomorphic Encryption with Reduced Computation and Communication[draft-irtf-cfrg-voprf-09] Oblivious Pseudorandom Functions (OPRFs) using Prime-Order Groups ...

February 22, 2023 · 3 min · jiezi

关于深度学习:不容错过飞桨深度学习与大模型产业应用论坛24日等你来

人工智能教父Hinton曾评估,“深度学习将无所不能”,从聊天机器人、主动驾驶到语音助手,深度学习早已在人不知;鬼不觉中浸透进咱们的生存。而AI大模型又是一项深度学习技术的新冲破。深度学习、大模型作为人工智能倒退的重要方向,带来了行业倒退的新机遇,强势推动了通用人工智能的疾速倒退。 以后,深度学习生态继续凋敝、AI技术进一步冲破,产业利用亟需再上新台阶。深度学习平台加上大模型,贯通从硬件适配、模型训练、推理部署到场景利用的AI全产业链,夯实产业智能化基座,将进一步减速智能化转型降级。 截至2022年底,飞桨已凝聚535万开发者,服务20万家企事业单位,基于飞桨创立了67万个模型,构建了全方位的生态体系,产学研协同,共创、共生、共赢,助力开发者疾速实现AI想法,翻新AI利用,作为根底平台撑持越来越多行业实现智能化降级。 文心是百度自主研发的产业级常识加强大模型,全景图由模型层、工具与平台层、产品与社区层形成。模型层涵盖根底大模型、工作大模型、行业大模型三级体系,模型总量达 36个,全面满足产业利用需要;工具与平台层包含大模型开发套件、文心API和提供全流程开箱即用大模型能力的EasyDL和BML开发平台,全方位升高利用门槛;产品与社区层包含AI艺术和辅助创作平台“文心一格”、产业级搜寻零碎“文心百中”和旸谷社区,让更多人零距离感触最先进AI大模型技术带来的新体验。 2月24日下午,百度飞桨联结第四届OpenI/0启智开发者大会,在深圳人才研修院智汇核心2楼多功能厅举办深度学习与大模型产业利用专场论坛。本次论坛将邀请来自企业的多位人工智能技术专家和资深工程师,从算法、硬件及大模型等不同视角进行深刻研究,介绍各畛域深度学习及大模型在产业利用的最新进展与技术冲破。 通过此次论坛,你将理解到: 飞桨及文心大模型技术生态助力AI产业高质量倒退,引领人工智能新生态的门路。在智能制作的趋势下,AI是怎么在工业的精细制作过程中助力实现品质优化。人工智能技术赋能临床诊疗与科研和民航飞机培修的可操作性。……还有更多AI产业前沿技术,涵盖工业、能源等畛域的前沿停顿和研发教训,都将在本次专场论坛中由各位行业技术专家和资深工程师为参会者带来具体介绍分享!围绕“引领前沿技术,推动产业降级”的主题,此次论坛将独特探讨如何助力前沿技术真正走向利用,碰撞出科技与思维的火花,为您献上精彩纷呈的常识盛宴! 深度学习与大模型技术正为咱们带来AI研发利用新范式,日益扭转着AI生态的格局。2月24日下午,让咱们与飞桨社区相约第四届OpenI/0启智开发者大会,独特见证“将来已来”!

February 20, 2023 · 1 min · jiezi

关于深度学习:概率和似然

在日常生活中,咱们常常应用这些术语。然而在统计学和机器学习上下文中应用时,有一个实质的区别。本文将用实践和例子来解释概率和似然之间的要害区别。 概率与似然假如在一场棒球较量中,两队的队长都被招集到场上掷硬币。获胜的队长将依据掷硬币的后果抉择先击球还是先投球。 当初,获胜的队长抉择先击球的概率是多少?咱们当初晓得只有两种可能的后果:获胜的队长决定先投球或开始击球。获胜的队有50%的几率会抉择先击球。 评论员当初正在探讨获胜队长抉择首先在击球的可能性。在理论中这个数字可能不到 50%,因为抉择先击球会受球场类型、天气、对方球队等因素的影响。比如说如果较量前下了大雨,决定先击球的可能性会低至 1%。如果天气条件恰到好处,那么获胜的队抉择先击球的可能性可能高达 95%。 所以在计算概率值时,咱们置信参数值=0.5是正确的。在思考了所有参数之后,咱们假如咱们确定参数值 =0.5。然而在计算似然时,咱们的指标是确定咱们是否能够信赖该参数。 所以咱们能够说概率是基于纯数学的;然而似然是一个有许多参数和条件的函数。 为什么似然不是概率分布?在抛硬币的状况下,咱们能够论述以下对于潜在后果 x 的状况。 硬币侧面朝上的概率是, 在此基础上,咱们能够提出以下对于求硬币侧面朝上和背面朝上的概率的问题。 上面的方程能够推广前一组方程。 当初,咱们能够看到下面的公式实用于k=1和k=0的值。 有了以上的根底,当初要思考两种不同的状况。 1、概率 假如在抛硬币之前,咱们晓得参数=3/4的值。在此基础上能够说失去侧面的概率是P(侧面)= = 3/4, P(背面)= 1- = 1/4。让咱们把这些数据画在一个简略的图表上。咱们放弃参数()不变,并扭转数据(x=1或x=0)。 2、似然 当初,假如咱们在抛硬币之前不晓得侧面或背面的概率,而咱们有数据的后果, 也就是说咱们曾经掷过硬币。当初,给定 x=1,找到 的概率是多少。在这种状况下,咱们保持数据 (x=1) 不变并更改参数 ()。 咱们指标是想找到定义这种后果的散布。简而言之,咱们想要找到给定 x 的 值。能够将其写成如下的数学格局。 P(x=1 | ) = L( | x=1) 这里须要留神的要害是曲线下的面积是1/2。所以,咱们能够说它不是一个无效的概率分布。它被称为似然散布。似然函数不遵从概率定律。因而似然函数在[0,1]区间内是无界的。 概率和似然之间的要害区别假如咱们从参数化散布 F(X;) 中失去一个随机变量 X。在此参数化散布中, 是定义散布 F(X;) 的参数。随机变量 X=x 的概率为 P(X=x) = F(x;),这里的参数 是已知的。 而咱们个别状况下会领有事实世界中的数据 (x),而定义散布 () 的参数是未知的。给定模型 F(X;),似然度定义为观测数据 X 随 变动的概率。咱们能够将其写为 L() = P(; X=x)。这里X 已知,但定义散布 () 的参数未知。定义似然的动机是为了确定散布的参数。 ...

February 18, 2023 · 1 min · jiezi

关于深度学习:3dmax的常用功能和使用方法

你有那么多教程,却不晓得如何入门3dmax。把握3dmax的罕用性能是开始应用3dmax的根底之一,所以明天边肖将为您盘点一下3dmax的一些罕用性能和应用办法。来来一起起学习3dmax入门的基础知识吧!3dmax简介:3dmax罕用性能具体阐明。 一、3dmax罕用性能一:物体的创立! 图片一般来说,对象的创立是通过从“规范根本体”和“扩大根本体”创立或批改软件的根本对象,或者用“样条”绘制来实现的。这是把握3dmax必不可少的基本功能。 二、3dmax罕用性能二:挪动物体单击3dmax工具栏中的挪动按钮。3dmax挪动物体的性能操作即可实现。这个按钮是一个通用的挪动性能按钮,多边形的点、边、面、边界和元素都能够用这个办法挪动。挪动物体的性能是入门3dmax的根底。对象的地位以坐标显示在底部,通过扭转坐标值能够间接扭转对象的地位。 三、3dmax罕用性能三:复制物体按住“Shift”而后挪动对象,会弹出复制类型菜单,应用3dmax的性能复制对象。其中,用“实例”选项失去的对象会随着源对象的变动而变动。复制性能同样实用于多边形编辑单位(如点)的复制。(复制性能也能够通过抉择菜单栏中的“克隆”,右键菜单来实现。 四、3dmax罕用性能四:旋转物体3dmax旋转对象性能是3dmax的罕用性能,点击工具栏上的旋转按钮即可应用。这个按钮是一个通用的旋转性能按钮,所有的多边形编辑单元都能够用这个办法旋转。 五、3dmax罕用性能五:缩放物体单击工具栏上的缩放按钮,应用3dmax缩放对象。这个按钮是一个通用的缩放性能按钮,多边形的所有编辑单位都能够用这个办法缩放。 六、3dmax罕用性能六:创立物体镜像要应用3dmax创建对象的镜像,请单击工具栏上的镜像按钮。这个罕用性能能够不便咱们复制多个3dmax对象,是咱们应用3dmax的基础知识之一。 七、3dmax罕用性能七:疾速对齐点击工具栏上的对齐按钮,实现3dmax的疾速对齐。该性能能够不便的解决多个3dmax模型的地位,是3dmax罕用的性能之一。 八、3dmax罕用性能八:汇合物体为了整体操作多个对象,须要应用3dmax来采集对象。抉择多个对象后,只需关上菜单栏中的“组”菜单,点击“设置”中的“设置(一)”。这也是3dmax入门根底中的关键点。 九、3dmax罕用性能九:合并物体应用3dmax的罕用性能,能够将两个对象合并成一个对象。只需在复合对象中应用布尔函数,并在拾取操作对象B之前,在点的操作列中单击“联结”.. 十、3dmax罕用性能十:材质赋予要给对象赋予材质,就要用3dmax的材质来赋予这个独特的性能。只需关上材质编辑器,将着色器拖到指标上即可。以上是十条3dmax罕用性能,心愿对大家在学习3dmax过程中有所帮忙。

February 17, 2023 · 1 min · jiezi

关于深度学习:100行Pytorch代码实现三维重建技术神经辐射场-NeRF

提起三维重建技术,NeRF是一个相对绕不过来的名字。这项逆天的技术,一经提出就被泛滥研究者所器重,对该技术进行深入研究并提出改良曾经成为一个热点。不到两年的工夫,NeRF及其变种曾经成为重建畛域的支流。本文通过100行的Pytorch代码实现最后的 NeRF 论文。 NeRF全称为Neural Radiance Fields(神经辐射场),是一项利用多目图像重建三维场景的技术。该项目标作者来自于加州大学伯克利分校,Google研究院,以及加州大学圣地亚哥分校。NeRF应用一组多目图作为输出,通过优化一个潜在间断的体素场景方程来失去一个残缺的三维场景。该办法应用一个全连贯深度网络来示意场景,应用的输出是一个单连通的5D坐标(空间地位x,y,z以及察看视角,),输入为一个体素场景,能够以任意视角查看,并通过体素渲染技术,生成须要视角的照片。该办法同样反对视频合成。 该办法是一个基于体素重建的办法,通过在多幅图片中的五维坐标建设一个由粗到细的对应,进而复原出原始的三维体素场景。 NeRF 和神经渲染的基本概念Rendering 渲染是从 3D 模型创立图像的过程。该模型将蕴含纹理、暗影、暗影、照明和视点等特色,渲染引擎的作用是解决这些特色以创立真切的图像。 三种常见的渲染算法类型是光栅化,它依据模型中的信息以几何形式投影对象,没有光学成果;光线投射,应用根本的光学反射定律从特定角度计算图像;和光线追踪,它应用蒙特卡罗技术在更短的工夫内取得真切的图像。光线追踪用于进步 NVIDIA GPU 中的渲染性能。 Volume Rendering 平面渲染使可能创立 3D 离散采样数据集的 2D 投影。 对于给定的相机地位,平面渲染算法为空间中的每个体素获取 RGB(红色、绿色、蓝色和 Alpha 通道),相机光线通过这些体素投射。RGB 色彩转换为 RGB 色彩并记录在 2D 图像的相应像素中。对每个像素反复该过程,直到出现整个 2D 图像。 View Synthesis 视图合成与平面渲染相同——它涉从一系列 2D 图像创立 3D 视图。这能够应用一系列从多个角度显示对象的照片来实现,创建对象的半球平面图,并将每个图像搁置在对象四周的适当地位。视图合成函数尝试在给定一系列形容对象不同视角的图像的状况下预测深度。 NeRF是如何工作的NeRF应用一组稠密的输出视图来优化间断的平面场景函数。这种优化的后果是可能生成简单场景的新视图。 NeRF应用一组多目图作为输出: 输出为一个单连通的5D坐标(空间地位x,y,z以及察看视角(; ) 输入为一个体素场景 c = (r; g; b) 和体积密度 ()。 上面是如何从一个特定的视点生成一个NeRF: 通过挪动摄像机光线穿过场景生成一组采样的3D点将采样点及其相应的2D察看方向输出神经网络,生成密度和色彩的输入集通过应用经典的平面渲染技术,将密度和色彩累积到2D图像中 上述过程深度的全连贯、多层感知器(MLP)进行优化,并且不须要应用卷积层。它应用梯度降落来最小化每个察看到的图像和从示意中出现的所有相应视图之间的误差。 Pytorch代码实现渲染 神经辐射场的一个要害组件,是一个可微分渲染,它将由NeRF模型表示的3D示意映射到2D图像。该问题能够表述为一个简略的重构问题 这里的A是可微渲染,x是NeRF模型,b是指标2D图像。 代码如下: defrender_rays(nerf_model, ray_origins, ray_directions, hn=0, hf=0.5, nb_bins=192): device=ray_origins.device t=torch.linspace(hn, hf, nb_bins, device=device).expand(ray_origins.shape[0], nb_bins) # Perturb sampling along each ray. mid= (t[:, :-1] +t[:, 1:]) /2. lower=torch.cat((t[:, :1], mid), -1) upper=torch.cat((mid, t[:, -1:]), -1) u=torch.rand(t.shape, device=device) t=lower+ (upper-lower) *u # [batch_size, nb_bins] delta=torch.cat((t[:, 1:] -t[:, :-1], torch.tensor([1e10], device=device).expand(ray_origins.shape[0], 1)), -1) x=ray_origins.unsqueeze(1) +t.unsqueeze(2) *ray_directions.unsqueeze(1) # [batch_size, nb_bins, 3] ray_directions=ray_directions.expand(nb_bins, ray_directions.shape[0], 3).transpose(0, 1) colors, sigma=nerf_model(x.reshape(-1, 3), ray_directions.reshape(-1, 3)) colors=colors.reshape(x.shape) sigma=sigma.reshape(x.shape[:-1]) alpha=1-torch.exp(-sigma*delta) # [batch_size, nb_bins] weights=compute_accumulated_transmittance(1-alpha).unsqueeze(2) *alpha.unsqueeze(2) c= (weights*colors).sum(dim=1) # Pixel values weight_sum=weights.sum(-1).sum(-1) # Regularization for white background returnc+1-weight_sum.unsqueeze(-1)渲染将NeRF模型和来自相机的一些光线作为输出,并应用平面渲染返回与每个光线相干的色彩。 ...

February 15, 2023 · 2 min · jiezi

关于深度学习:深度学习调参小册

作者:京东批发 彭馨谷歌大脑的五位深度学习大佬在 “Chinese New Year” 期间单干推出了《深度学习调参手册》,来为各位深度学习爱好者恭贺新年(我猜的),一时间好评如潮,获星过万,看来大家都是苦调参久已。难道依附教训的调参变得“可解释”了?显然不是,而是大佬们分享本人的调参教训,内容还是挺多的,上面咱们去粗取精,心愿可能取得飞升。 一、新我的项目指南调参并不是开始我的项目的第一步,在此之前,咱们要实现一些必要的根本工作,如 问题制订、数据荡涤、pipeline 设置、评估指标 等确定后,花工夫在模型架构和训练配置上才有意义。 1.抉择模型架构• 在进行一个新我的项目时,首先要尝试重用曾经通过验证并无效的模型。如果要新开发,也应该抉择一个欠缺、罕用的模型架构先来发展工作,之后再去缓缓构建本人的自定义模型。 • 模型架构具备一系列的超参数,如 层数、层宽度、激活函数 等,抉择架构实际上是抉择具备不同超参数的模型,前面的 抉择初始配置 和 进步模型性能的迷信办法 次要是讲抉择模型超参数的问题。 • 如果能找到一篇靠近解决手头问题的论文,并将其中模型进行复现,是个很好的抉择。 2.抉择优化器(optimizer)• 没有哪个优化器能说是“最好的”,优化器性能的比拟也是任务艰巨,所以 倡议应用成熟、风行的优化器,尤其是在进行新我的项目时。现实状况下,对于同一类型的问题最好抉择最风行的优化器。 • 优化器的每个参数都是很重要的,超参数多的优化器可能要调参更久。 • 我的项目开始阶段,先从简略的开始,如固定动量的 SGD 或固定__、_\_1和\__2的 Adam,之后再切换到更通用的优化器。 • 作者喜爱的比较完善的优化器有:动量 SGD(Nesterov 变体)、Adam 和 NAdam(比动量SGD更通用,Adam有4个很重要的可调超参数) 3.抉择批量大小(batch_size)• batch_size 决定训练速度,而不是为了间接进步验证集的成果。通常,硬件可能反对的最大 batch\_size 就是现实值。增大 batch\_size 通常会缩小训练工夫,这样就有更多的工夫调参,发现更好的模型,还能够尝试更多新思路。 • 减少 batch_size 在资源耗费上时不固定的,可能会缩小、减少或不扭转。 • 只有调整好所有超参数(尤其是学习率和正则化超参数)并且训练步数足够,应用任何批量大小都应该能够取得雷同的最终性能。 3.1 确定可行的 batch_size 并预计训练吞吐量• batch\_size 受到加速器内存的限度,所以最合适的 batch\_size 须要训练代码去试出来,最简略的计划是按2的幂减少 batch_size 去训练几步,看哪个会超出内存。 • batch\_size 和训练吞吐量(每秒解决样本数)是成正比的,增大 batch\_size 是为了增大吞吐量,这样能力缩小训练工夫,如果 batch\_size 减少而训练吞吐量没啥变动,则阐明 pipeline 存在瓶颈,例如 I/O 或计算节点之间的同步,此时须要进行诊断和纠正或者应用吞吐量最大的 batch\_size。 ...

February 14, 2023 · 2 min · jiezi

关于深度学习:独立产品灵感周刊-DecoHack-047-安卓手机上最有用的APP

本周刊记录乏味好玩的独立产品设计开发相干内容,每周公布,往期内容同样精彩,感兴趣的搭档能够点击订阅我的周刊。为保障每期都能收到,倡议邮件订阅。欢送通过 Twitter 私信举荐或投稿。 产品举荐1. Bouncer Temporary Permissions 安卓权限治理这是一个Android 上的权限管理软件,没有订阅,没有广告,可能是手机上惟一无法访问网络的应用程序。隐衷爱护的终极计划。 2. App Manager - 应用程序管理器 - Android 包管理器这个 APP 是用来查看应用程序外部的跟踪器、权限、数据应用状况等。开源我的项目 3. Read You一款 Android RSS 阅读器,Material You 的设计格调,很简洁,没有任何多余的性能,能够导入RSS 链接或者间接导入本人的 OPML 文件。开源的。 4. FolderSync这个是 Android 上文件云同步的一个APP,反对很多不同的云提供商和文件协定,也在一直增加更多平台的反对。 5. nzb360 - Sonarr / Radarr / SAB 磁力链接管理器这是一个 Android 端十分好用的手机磁力链接管理工具,性能十分弱小,反对多种格局的链接,反对多种连贯形式同步下载,除了可能治理磁力链接之外,它还蕴含了URL重定向、dns反向解析、http身份验证等特色性能;十分的实用。更多功能能够看看官网介绍。 6. List My Apps这个 APP 很乏味,能够导出你 Android 手机上所有的 APP 列表,并且有下载链接。就这一个性能,然而很有用。 7. nocode.gallery这个网站收集了很多用无代码工具制作的精美网站。 包含 Framer 、Webflow 和其余 nocode 工具制作的网站,能够按平台进行过滤。 ...

February 13, 2023 · 1 min · jiezi

关于深度学习:盘点多模态深度学习这几年

转载自:机器之心原文地址:盘点多模态深度学习这几年!近年来,NLP 和 CV 畛域在办法上冲破一直。不只是单模态模型有所停顿,而大规模多模态办法也曾经成为十分热门的钻研畛域。 在最近的一篇论文中,研究者Matthias Aßenmacher回顾梳理了深度学习这两个子畛域以后最先进的钻研办法,并尝试进行全面的概述。此外,还探讨了将一种模态转换为另一种模态的建模框架(第 3.1 章和第 3.2 章),以及利用一种模态加强另一种模态的表征学习模型(第 3.3 章和第 3.4 章)。研究者引入了偏重同时解决两种模态的架构(第 3.5 章)作为第二局部的序幕。最初,论文还涵盖了其余模态(第 4.1 章和第 4.2 章)以及通用多模态模型(第 4.3 章),这些模型可能在一个对立架构中解决不同模态上的不同工作。一个乏味的利用(「生成艺术」,第 4.4 章)最终成为这篇综述的精益求精之笔。 01  目录 02  多模态深度学习简介人类有五种根本感官:听觉、触觉、嗅觉、味觉和视觉。借由这五种模式,咱们得以感知和了解四周的世界。「多模态」则意味着同时利用多种信息渠道的联合来了解周围环境。例如,当蹒跚学步的孩子学习「猫」这个词时,他们会用不同的形式大声说出这个词,指着猫,收回相似「喵喵」的声音。AI 钻研人员以人类学习过程为范式,联合不同模态来训练深度学习模型。 从外表上看,深度学习算法通过训练神经网络以优化损失函数来优化定义的指标函数。优化,行将损失最小化,通过称为梯度降落的数值优化程序实现。因而,深度学习模型只能解决数字输出,也只能产生数字输入。然而,在多模态工作中,咱们常常遇到图片或文本等非结构化数据。所以,对于多模态工作的首要问题是如何用数字表征输出;其次则是如何失当地组合不同模态。 例如,训练深度学习模型来生成一张猫的图片可能就是一个典型的工作。首先,计算机须要了解文本输出「猫」,而后以某种形式将这些信息转换成特定图像。因而,确定输出文本中单词间的上下文关系和输入图像中像素点间的空间关系很有必要。对幼儿来说可能很容易这件事,对于计算机却可能是微小挑战。二者都必须对「猫」这个词有肯定了解,包含这个动物的外延和外观。 以后深度学习畛域一种常见办法是生成嵌入,用数字模式将猫表征为某个潜在空间中的向量。为了实现这一点,近年来曾经开发出各种办法和算法架构。本文概述了最先进(SOTA)多模态深度学习中应用的各类办法,以克服非结构化数据和不同模态输出组合带来的挑战。 03  章节介绍因为多模态模型通常以文本和图像作为输出或输入,所以第2章着重介绍了自然语言解决(NLP)和计算机视觉(CV)办法。NLP 畛域的办法次要在于文本数据处理,而 CV 多进行图像处理。 对于 NLP(第 2.1 大节)的一个十分重要的概念叫做词嵌入,简直是当初所有多模态深度学习架构的重要组成部分。这一概念也为基于Transformer的模型奠定了根底,比方 BERT ,该模型在几个 NLP 工作中都获得了重大进展。特地是Transformer的自注意力机制彻底改变了 NLP 模型,这也是为什么大多数 NLP 模型将Transformer作为外围。 在计算机视觉(第 2.2 大节)中,作者介绍里不同的网络架构,即 ResNet、EfficientNet、SimCLR和BYOL。在这两个畛域,比拟不同办法及其在富裕挑战性的基准上体现如何是十分有意义的。因而,第 2 章末 2.3 大节对 CV 和 NLP 的不同数据集、预训练任务和基准进行了全面概括。 第3章侧重于不同的多模态架构,涵盖文本和图像的多种组合形式,提出的模型相组合并推动了 NLP 和 CV 不同办法的钻研。首先介绍了 Img2Text 工作(第 3.1 大节)、用于指标辨认的 Microsoft COCO 数据集和用于图像捕捉的Meshed-Memory Transformer。 ...

February 11, 2023 · 1 min · jiezi

关于深度学习:机器学习评估指标的十个常见面试问题

评估指标是用于评估机器学习模型性能的定量指标。它们提供了一种零碎和主观的办法来比拟不同的模型并掂量它们在解决特定问题方面的胜利水平。通过比拟不同模型的后果并评估其性能能够对应用哪些模型、如何改良现有模型以及如何优化给定工作的性能做出正确的决定,所以评估指标在机器学习模型的开发和部署中施展着至关重要的作用。所以评估指标是面试时常常会被问到的根底问题,本文整顿了10个常见的问题。 1、你能在机器学习的背景下解释精度和召回率之间的区别吗?在机器学习模型中,精度和召回率是两个罕用的评估指标。精度是掂量模型在所有正预测中做出的真正正预测的数量,示意模型防止假阳性预测的能力。 Precision = TP/TP+FP 召回率是掂量模型在数据集中所有理论踊跃实例中做出的真正预测的数量。召回率示意模型正确辨认所有正实例的能力。 Recall = TP/TP+FN 精确性和召回率都是重要的评估指标,但两者之间的衡量取决于要解决的具体问题的要求。例如,在医学诊断中,召回率可能更重要,因为它对辨认一种疾病的所有病例至关重要,即便这会导致更高的假阳性率。然而在欺诈检测中,精确度可能更重要,因为防止虚伪指控至关重要,即便这会导致更高的假阴性率。 2、如何为给定的问题抉择适合的评估指标?为给定的问题抉择适当的评估是模型开发过程的一个要害方面。在抉择指标时,思考问题的性质和剖析的指标是很重要的。须要思考的一些常见因素包含: 问题类型:是二元分类问题、多类分类问题、回归问题还是其余问题? 业务指标:剖析的最终目标是什么,须要什么样的性能?例如,如果指标是最小化假阴性,召回率将是一个比精度更重要的指标。 数据集特色:类是均衡的还是不均衡的?数据集是大还是小? 数据品质:数据的品质如何,数据集中存在多少噪声? 基于这些因素,能够抉择一个评估指标,如accuracy、F1-score、AUC-ROC、Precision-Recall、均方误差等。然而个别都会应用多个评估指标来取得对模型性能的残缺了解。 3、你能介绍一下用F1 score吗?F1 score是机器学习中罕用的评估指标,用于均衡精度和召回率。精确度掂量的是模型所做的所有侧面预测中正察看的比例,而召回率掂量的是所有理论正察看中正预测的比例。F1分数是精度和召回率的和谐平均值,通常用作总结二元分类器性能的繁多指标。 F1 = 2 (Precision Recall) / (Precision + Recall) 在模型必须在精度和召回率之间做出衡量的状况下,F1分数比独自应用精度或召回率提供了更粗疏的性能评估。例如,在假阳性预测比假阴性预测老本更高的状况下,优化精度可能更重要,而在假阴性预测老本更高的状况下,可能会优先思考召回。F1分数可用于评估模型在这些场景下的性能,并就如何调整其阈值或其余参数来优化性能给出相应的数据反对。 4、你能解释在模型评估中应用ROC曲线的起因吗?ROC曲线是二元分类模型性能的图形示意,该模型绘制真阳性率(TPR)与假阳性率(FPR)。它有助于评估模型的敏感性(真阳性)和特异性(真阴性)之间的衡量,并宽泛用于评估基于二元分类后果(如是或否、通过或失败等)进行预测的模型。 ROC曲线通过比拟模型的预测后果和理论后果来掂量模型的性能。一个好的模型在ROC曲线下有很大的面积,这意味着它可能精确地区分正类和负类。ROC AUC (Area Under the Curve,曲线下面积)用于比拟不同模型的性能,特地是在类别不均衡时评估模型性能的好办法。 5、如何确定二元分类模型的最佳阈值?二元分类模型的最佳阈值是通过找到在精度和召回率之间均衡的阈值来确定的。这能够通过应用评估指标来实现,例如F1分数,它均衡了准确性和召回率,或者应用ROC曲线,它绘制了各种阈值的真阳性率和假阳性率。最佳阈值通常抉择ROC曲线上最靠近左上角的点,因为这样能够最大化真阳性率,同时最小化假阳性率。在实践中,最佳阈值还可能取决于问题的具体指标以及与假阳性和假阴性相干的老本。 6、你能介绍以下模型评估中精度和召回率之间的衡量吗?模型评估中精度和召回率之间的衡量是指正确辨认侧面实例(召回率)和正确辨认仅侧面实例(召回率)之间的衡量。精度高意味着假阳性的数量低,而召回率高意味着假阴性的数量低。对于给定的模型,通常不可能同时最大化精度和召回率。为了进行这种衡量,须要思考问题的特定指标和需要,并抉择与它们相一致的评估度量。 7、如何评估聚类模型的性能?聚类模型的性能能够应用许多指标进行评估。一些常见的指标包含: Silhouette 分数:它掂量察看到本人的簇与其余簇相比的相似性。分数范畴从 -1 到 1,值越靠近 1 示意聚类构造越强。 Calinski-Harabasz指数:它掂量的是簇间方差与簇内方差的比值。较高的值示意更好的聚类解决方案。** Davies-Bouldin 指数:它掂量每个簇与其最类似的簇之间的均匀相似性。较小的值示意更好的聚类解决方案。 Adjusted Rand 指数:它测量实在类标签和预测聚类标签之间的相似性,并依据概率进行调整。较高的值示意更好的聚类解决方案。 混同矩阵:它能够通过将预测的聚类与实在的类进行比拟来评估聚类模型的准确性。 然而抉择适合的评估指标也取决于具体问题和聚类分析的指标。 8、多类分类问题的背景下,accuracy, precision, recall, and F1-score之间的区别以下是在多类分类问题的背景下,以表格模式比拟accuracy, precision, recall, and F1-score: 9、如何评估举荐零碎的性能?评估举荐零碎的性能包含掂量零碎向用户举荐相干我的项目的有效性和效率。一些罕用的用于评估举荐零碎性能的指标包含: Precision:与用户相干的举荐我的项目的比例。Recall:零碎举荐相干我的项目的比例。F1-Score:精密度和召回率的和谐平均值。Mean Average Precision (MAP):一个举荐零碎的整体用户的均匀精度的度量。Normalized Discounted Cumulative Gain (NDCG):掂量举荐我的项目的等级加权相关性。Root Mean Square Error (RMSE):对一组我的项目的预测评分和理论评分之间的差别进行测量。10、在评估模型性能时,如何解决不均衡的数据集?为了在模型评估中解决不均衡的数据集,能够应用以下几种技术: ...

February 10, 2023 · 1 min · jiezi

关于深度学习:机器深度学习中的-Dropout

在这篇文章中,我将次要探讨神经网络中 dropout 的概念,特地是深度网络,而后进行试验,通过在规范数据集上施行深度网络并查看 dropout 的影响,看看它在实践中理论影响如何。 1. Dropout是什么?术语“dropout”是指在神经网络中抛弃单元(包含暗藏的和可见的)。简略来说,dropout 是指随机抉择的某组神经元在训练阶段疏忽单元(即神经元)。 “疏忽”是指在特定的前向或后向传递过程中不思考这些单元。 具体的就是,在每个训练阶段,单个节点要么以 1-p 的概率退出网络,要么以 p 的概率保留,这样就剩下一个放大的网络;也删除了到抛弃节点的传入和传出边。 2. 为什么须要Dropout?鉴于咱们对 dropout 有所理解,一个问题呈现了——为什么咱们须要 dropout?为什么咱们须要敞开神经网络的某些局部? 这些问题的答案是“避免过拟合”。 全连贯层占据了大部分参数,因而,神经元在训练过程中相互依赖,这克制了每个神经元的个体能力,导致训练数据过拟合。 3. 从新扫视 Dropout当初咱们对 dropout 和动机有了一些理解,让咱们来具体理解一下。如果你只是想理解神经网络中的 dropout,那么以上两节就足够了。在本节中,我将波及更多技术细节。 在机器学习中,正则化是避免适度拟合的办法。正则化通过向损失函数增加惩办来缩小适度拟合。通过增加这个惩办,模型被训练成不学习相互依赖的特色权重集。理解逻辑回归的人可能相熟 L1(拉普拉斯)和 L2(高斯)惩办。 Dropout 是一种神经网络正则化办法,有助于缩小神经元之间的相互依赖学习。 4. 训练阶段训练阶段:对于每个暗藏层,对于每个训练样本,对于每次迭代,疏忽(清零)节点(和相应的激活)的随机分数 p。 5. 测试阶段应用所有激活,但将它们缩小一个因子 p(以解决训练期间失落的激活)。 6. 作用Dropout 迫使神经网络学习更弱小的特色,这些特色与其余神经元的许多不同随机子集联合应用时很有用。Dropout 使收敛所需的迭代次数加倍。然而,每个期间的训练工夫较少。有 H 个暗藏单元,每个暗藏单元都能够被抛弃,咱们有2^H 个可能的模型。在测试阶段,思考整个网络,每次激活都缩小一个因子 p。7. 实际效果让咱们在实践中试试这个实践。为了理解 dropout 的工作原理,我在 Keras 中构建了一个深层网络,并尝试在 CIFAR-10 数据集上对其进行验证。构建的深度网络具备三个大小为 64、128 和 256 的卷积层,而后是两个大小为 512 的密集连贯层和一个大小为 10 的输入层密集层(CIFAR-10 数据集中的类数)。 我将 ReLU 作为暗藏层的激活函数,将 sigmoid 作为输入层的激活函数(这些是规范,并没有在扭转这些方面做太多试验)。另外,我应用了规范的分类穿插熵损失。 最初,我在所有层中应用了 dropout,并将 dropout 的比例从 0.0(基本没有 dropout)减少到 0.9,步长为 0.1,并将每个层运行到 20 个 epoch。后果如下所示: ...

February 10, 2023 · 1 min · jiezi

关于深度学习:启科量子解决方案实践使用-QuTrunkAmazon-Deep-Learning-AMI-构建量子神经网络

量子神经网络是基于量子力学原理的计算神经网络模型。1995年,Subhash Kak 和 Ron Chrisley 独立发表了对于量子神经计算的第一个想法,他们致力于量子思维实践,认为量子效应在认知性能中起作用。然而,量子神经网络的典型钻研波及将经典的人工神经网络模型(在机器学习中宽泛用于模式识别的重要工作)与量子信息的劣势相结合,以倒退更高效的算法。这些钻研的一个重要动机是经典神经网络难以训练,特地是在大数据利用中更是如此。心愿能够利用量子计算的个性,如量子并行性或干预和纠缠效应作为资源。 基于QuTrunk+AI框架构建量子神经网络的解决方案,与Mindspore及paddle联合实际曾经公布过相干实战的文章。而TensorFlow作为一个十分风行和重要的AI深度学习框架,QuTrunk也同样反对与之联合一起应用。本文次要介绍在AWS试验环境中应用QuTrunk联合TensorFlow来实现量子神经网络构建的试验。试验之前,咱们首先介绍下本示例中应用到的两个技术资源:AWS DLAMI和TensorFlow。 1、AWS DLAMI及TensorFlow简介1.1 AWS DLAMIAWS提供的Amazon Deep Learning AMI(缩写为DLAMI)能够帮忙用户疾速的部署部署好深度学习试验环境和疾速上手试验。它具备如下特点: 预装框架:DLAMI目前次要有2个次要的规格:DL Base AMI和DLAMI with conda和。DL Base AMI未装置框架,仅装置了NVIDIA CUDA和其余依赖项。DLAMI with conda则全副都蕴含,不仅齐全装备了TensorFlow、PyTorch、Apache MXNet机器学习框架,也事后配置了NVIDIA CUDA和NVIDIA cuDNN。它应用Conda环境来隔离每个框架,用户能够在它们之间随便切换,而不必放心它们的依赖关系抵触;预装GPU软件:即便应用仅CPU的实例,DLAMI也将具备NVIDIA CUDA和NVIDIA cuDNN。无论实例类型如何,装置的软件都雷同。模型服务和可视化:应用Conda的深度学习AMI预装了两种模型服务器,一种用于MXNet,另一种用于TensorFlow,以及TensorBoard,用于模型可视化。 1.2 TensorFlow2TensorFlow是一个用于机器学习和人工智能的收费开源软件库。它能够用于一系列工作,但特地关注深度神经网络的训练和推理。 TensorFlow由谷歌大脑团队开发,用于谷歌外部钻研和生产。初始版本于2015年依据Apache License 2.0公布。Google于2019年9月公布了TensorFlow的更新版本,名为TensorFlow 2.0。TensorFlow可用于多种编程语言,包含Python、JavaScript、C++和Java。 这种灵活性实用于许多不同行业的一系列利用。 TensorFlow 2.0引入了许多变动,最重要的是TensorFlow eager,它将主动微分计划从动态计算图扭转为最后由Chainer和起初的PyTorch风行的“按运行定义”计划。其余次要变动包含删除旧库、不同版本TensorFlow上的训练模型之间的穿插兼容性以及GPU性能的显著改良。 2、试验环境搭建2.1 启动AWS Deep Learning EC2实例2.1.1、关上EC2 Dashborad 登录AWS的治理控制台,点击右上角Region下拉菜单切换到须要创立的资源的Region,本示例应用亚太新加坡站点的资源。而后从Services抉择EC2,关上EC2 Dashboard。 2.1.2、创立EC2拜访密钥对顺次点击服务->计算->EC2关上EC2的主页面。首先创立好秘钥对便于前面登录到EC2,顺次点击左侧导航栏的网络与平安->密钥对->创立密钥对。 实现创立后主动下载秘钥,保留好秘钥文件备用。 2.1.3、AMI抉择返回到EC2主页,抉择启动实例,关上实例配置页面,先设置实例名称设置为QNNDemo_Tensor,而后抉择镜像版本,搜寻框输出Deep Learning进行搜寻,关上镜像搜寻后果页面,显示如下: 疾速启动AMI中有8个搜寻后果,本示例应用的是TensorFlow2,抉择搜寻后果中:Deep Learning AMI GPU TensorFlow 2.11.0 (Ubuntu 20.04) 20221220这个镜像。 2.1.4、实例类型确定选定镜像后再确定须要创立的实例类型。镜像的实例类型能够在实例上面的实例类型中查问,例如查问GPU是实例类型,依据条件过滤,能够看到有如下gpu实例类型: AWS提供了大量的实例类型可供用户抉择,用户能够从经济和需要角度登程,抉择适合的镜像来创立实例。对于深度学习,AWS举荐是应用GPU实例P3,P4,G3,G4,G5和G5g。各GPU实例类型的配置如下: P3具备 8 NVIDIA Tesla V100 GPUsP4具备8 NVIDIA Tesla A100 GPUsG3具备4 NVIDIA Tesla M60 GPUsG4具备4 NVIDIA T4 GPUsG5具备o 8 NVIDIA A10G GPUG5g则有基于Arm的 AWS Graviton2 processors。如果经济上受限或者对于性能要求不是十分高,AWS也提供了绝对经济的深度学习CPU实例和推理实例。深度学习举荐的CPU实例有三种:C5(不是所以的region都提供)、C4、C3等实例类型。 ...

February 9, 2023 · 3 min · jiezi

关于深度学习:初学者必看3D建模要学什么软件

近年来,随着3D建模技术的疾速倒退,这一技术在各行各业都失去了极为宽泛的市场利用,比如说:游戏行业的VR游戏、3D游戏、影视行业的三维动画、特效电影、室内设计的三维效果图制作等行业畛域,都少不了3D建模师的人才投入。所以在广大的职业发展前景背后,全面学习并把握学习3D建模这项技术将会为大家的将来铸就有限的倒退可能性,那么对于初学者来说,3D建模到底要学什么软件呢? 初学者3d建模软件包含MAYA、3DSMAX、Headus UVLayout、ZBrush、Vray渲染器软件等,不同建模方向须要抉择不同的软件,进行针对性建模。 1、MAYA:属于三维动画软件,能与多个软件相接,进行3d建模相干模型解决。 2、3DSMAX:领有丰盛的插件,是3d建模支流软件之一,利用范围广,初学者容易上手。 3、Headus UVLayout:是拆UV的专用软件,能够通过快捷键疾速操作。 4、ZBrush:是数字雕刻和绘画软件,功能强大,流程直观。 5、Vray渲染器软件:可在建模后进行动画渲染,丑化成果。 一、什么是3D建模? 3D是three-dimensional的英文缩写,就是三维图形。3D建模个别是指的利用三维制作软件通过虚构三维空间构建出具备三维数据的模型。并不特指某款软件的模型,但总被误指为3D Studio Max建模。 二、3D艺术类设计软件1、3DS Max美国Autodesk公司的3D Studio Max(前身是Discreet公司的,后被Autodesk收买)是基于PC零碎的三维建模、动画、渲染的制作软件,为用户群最为宽泛的3D建模软件之一。罕用于修建模型、工业模型、室内设计等行业。因为其广泛性,它的插件也很多,有些很弱小,基本上都能满足个别的3D建模的需要。 2、MayaMaya也是Autodesk公司出品的3D软件,它集成了早年的两个3D软件Alias和 Wavefront。相比于3DS Max,Maya的专业性更强,性能十分弱小,渲染真实感极强,是电影级别的高端制作软件。在工业界,利用Maya的多是从事影视广告,角色动画,电影特技等行业。 3、ZBrushZBrush是一个数字雕刻和绘画软件,它以弱小的性能和直观的工作流程彻底改变了整个三维行业在建模方面,ZBrush能够说是一个极其高效的建模器。它进行了相当大的优化编码改革,并与一套独特的建模流程相结合,能够让你制作出令人诧异的简单模型。无论是从中级到高分辨率的模型,你的任何雕刻动作都能够霎时失去回应。还能够实时的进行一直的渲染和着色。 4、Rhion(犀牛)Rhino,中文名称犀牛,是一款超强的三维建模工具,大小才几十兆,硬件要求也很低。 它能轻易整合3DSMAX与Softimage的模型性能局部,对要求精密、弹性与简单的3DNURBS模型,有点石成金的效力。能输入obj、DXF、IGES、STL、3dm等不同格局,并实用于简直所有3D软件。 特地是在创立NURBS曲线曲面方面功能强大,也失去很多建模专业人士的青睐。用Rhino来进行船体曲面的NURBS建模和批改,十分不便灵便。 三、3D工程类设计软件 1、SketchUPSketchUp是一个极受欢迎并且易于应用的3D设计软件,官方网站将它比喻作电子设计中的"铅笔",在sketchup中建设三维模型就像咱们应用铅笔在图纸上作图个别,sketchup自身能自动识别你的这些线条,加以主动捕获。它的建模流程简单明了,就是画线成面,而后挤压成型,这也是修建建模最罕用的办法。 2、SolidworksSolidworks软件功能强大,组件繁多。 Solidworks有功能强大、易学易用和技术创新三大特点,这使得SolidWorks成为当先的、支流的三维CAD解决方案。另外,SolidWorks可能提供不同的设计方案、缩小设计过程中的谬误以及进步产品质量。 3、Pro/EPro/E是AD/CAM/CAE一体化的三维软件。Pro/Engineer软件以参数化著称,是参数化技术的最早利用者,在目前的三维造型软件畛域中占有着重要位置。Pro/E采纳了模块形式,能够别离进行草图绘制、整机制作、拆卸设计、钣金设计、加工解决等,保障用户能够依照本人的须要进行抉择应用。 4、UG这是一个交互式CAD/CAM(计算机辅助设计与计算机辅助制作)零碎,它功能强大,能够轻松实现各种简单实体及造型的建构。它在诞生之初次要基于工作站,但随着PC硬件的倒退和个人用户的迅速增长,在PC上的利用获得了迅猛的增长,目前曾经成为模具行业三维设计的一个支流利用。 四、3D打印检测软件Magics说到查看、修复模型,鼎鼎大名的Magics软件就不得不提了,这是比利时Materialise公司针对3D打印工艺特色开发的软件,Magics是业余解决STL文件的,具备功能强大、易用、高效等长处,是从事3D打印行业必不可少的软件,罕用于整机摆放、模型修复、增加撑持、切片等环节。 五、3D教育建模软件 3D One3D One中文版是一款十分好用的次要为中小学生设计的3D设计软件,该软件界面简洁、功能强大、操作简略、易于上手,重点整合了罕用的实体造型和草图绘制命令,简化了操作界面和工具栏,实现了3D设计和3D打印软件的间接连贯,让老师教学更平面,孩子学习更轻松!此外,初学者也实用。 以上为大家整顿的几款目前最罕用的3D建模软件,心愿对大家学习3D软件有帮忙。大家能够依据所理解的软件性能并联合本人的需要,抉择本人喜爱的软件,让设想不再是设想,只管把它变成事实,一起动起来吧!!

February 8, 2023 · 1 min · jiezi

关于深度学习:QBUS2310管理科学

QBUS2310 Management ScienceAssignment 2Semester 1, 2022Out: 2nd May 2022Due: 23rd May 2022 at 11:59pmInstructions This assignment consists of five problems, some involving multiple parts. Some parts require a writtenresponse and others involve coding. The parts that require a written response are described in thisdocument, while the coding questions are described in the associated Jupyter notebook (.ipynb file). When a problem asks you to formulate a model, you need to provide your mathematical formulationwith clear justification of variables, constraints and objective. If you decide to label any of the data withalgebraic symbols, you must clearly define these (e.g., let aij be the amount of material i required byproduct j). The written parts have to be typed up. This means no handwriting and no screen shots. If you are usingMS Word, use the equation editor to make your mathematics look pretty. We recommend using LATEX ora similar system for typesetting your answer. You should submit a PDF to GradeScope for the written parts and match the page number with thequestions that you answered. You can find the detailed instructions on how to scan and submit yourassignments through GradeScope on Canvas. If you fail to match the page to the corresponding question,the marker will not be able to view your response and thus you will be awarded 0 marks for the question. You should answer the coding questions by modifying the Jupyter notebook appropriately, and submit itthrough Canvas. All the problems can be done using only the material from this class, and we will deduct points fromsolutions that refer to outside material.Question: 1 2 3 4 5 TotalPoints: 15 15 25 20 25 100iQBUS2310 Assignment 2 Due 23rd May 2022 ...

February 6, 2023 · 13 min · jiezi

关于深度学习:深度学习中的潜在空间

1. 简介在本教程中,咱们将探讨深度学习中的潜在空间。首先,咱们将定义这个术语并探讨它对深度学习的重要性,而后咱们将展现一些潜在空间的例子。 2. 定义模式上,潜在空间被定义为形象的多维空间,它编码内部察看事件的有意义的外部示意。在内部世界中类似的样本在潜在空间中彼此凑近。 为了更好地了解这个概念,让咱们考虑一下人类如何感知世界。通过将每个察看到的事件编码为咱们大脑中的压缩示意,咱们可能了解宽泛的主题。 例如,咱们不会记住狗的每一个外观细节,以便可能在街上认出一只狗。正如咱们在下图中所看到的,咱们保留了狗的个别外观的外部示意: 以相似的形式,潜在空间试图通过空间示意向计算机提供对世界的压缩了解。 3. 深度学习的重要性深度学习曾经彻底改变了咱们生存的许多方面,其利用范畴从主动驾驶汽车到预测重大疾病。它的次要指标是将原始数据(例如图像的像素值)转换为适合的外部示意或特征向量,学习子系统(通常是分类器)能够从中检测或分类输出中的模式。因而,咱们意识到深度学习和潜在空间是密切相关的概念,因为前者的外部示意形成了后者。 正如咱们在上面看到的,深度学习模型将输出原始数据并输入位于称为潜在空间的低维空间中的判断特色。而后应用这些特色来解决各种工作,如分类、回归或重建: 为了更好地了解潜在空间在深度学习中的重要性,咱们应该思考以下问题:为什么咱们必须在分类、回归或重建之前在低维潜在空间中对原始数据进行编码? 答案是数据压缩。具体来说,在咱们的输出数据是高维的状况下,不可能间接从原始数据中学习重要信息。 例如,在图像分类工作中,输出维度可能与输出像素绝对应。零碎仿佛不可能通过查看如此多的值来学习有用的分类模式。解决方案是应用深度神经网络将高维输出空间编码为低维潜在空间。 4. 实例当初,让咱们探讨深度学习中的一些例子,其中潜在空间的存在对于捕捉工作复杂性和实现高性能是必要的。 4.1. 图像特色空间正如咱们之前提到的,潜在空间是每个卷积神经网络不可或缺的一部分,它以图像的原始像素作为输出,并在最初一层对潜在空间中的一些高级特色进行编码。 这个潜在空间使模型可能应用低维判断特色而不是高维原始像素来执行工作(例如,分类)。在下图中,咱们能够看到 CNN 的个别架构: 训练后,模型的最初一层捕捉了图像分类工作所需的重要输出模式。在潜在空间中,描述同一对象的图像具备十分靠近的示意。通常,潜在空间中向量的间隔对应于原始图像的语义相似性。 上面,咱们能够看到动物分类模型的潜在空间是怎么的。绿色点对应于从模型的最初一层提取的每个图像的潜在向量。咱们察看到雷同动物的向量更靠近潜在空间。因而,模型更容易应用这些特征向量而不是原始像素值对输出图像进行分类: 4.2. 词嵌入空间在自然语言解决中,词嵌入是词的数字示意,因而类似的词具备靠近的示意。因而,词嵌入位于一个潜在空间中,每个词都被编码成一个低维语义向量。 有许多学习词嵌入的算法,如 Word2Vec 或 GloVe。在下图中,咱们能够看到潜在空间中词嵌入的拓扑图: 正如预期的那样,语义类似的词,如“toilet”和“bathroom”,在潜在空间中有严密的词嵌入。 4.3. GANs在之前的教程中,咱们曾经探讨了很多对于 GAN 及其利用的内容。简而言之,GAN 将来自某些先验散布和输入的随机向量作为输出和图像。该模型的指标是学习生成实在数据集的底层散布。例如,如果咱们的数据集蕴含带椅子的图像,则 GAN 模型会学习生成带椅子的合成图像。 GAN 的输出充当潜在向量,因为它将输入图像编码为低维向量。为了验证这一点,咱们能够看到插值在潜在空间中是如何工作的,因为咱们能够通过线性批改潜在向量来解决图像的特定属性。 在下图中,咱们能够看到如何通过扭转生成人脸的 GAN 的潜在向量来解决人脸的姿态: 5. 总结在本教程中,咱们介绍了深度学习中的潜在空间。首先,咱们探讨了该术语的定义及其与深度学习的密切关系,而后咱们提供了一些说明性示例。 本文由mdnice多平台公布

February 1, 2023 · 1 min · jiezi

关于深度学习:笔记深度学习基本概念理解01

前言:省得笔记失落,把以前做的笔记都放到博客下面好了。 什么是深度学习模型?深度学习模型是通过大量数据学习,找到肯定法则,从而可能对新的进行预测。(这种法则:通过模型架构+调参失去) 深度学习步骤1.初始化一个模型(参数可随机取)+带标签的训练集和测试集(验证集)。2.训练集带入模型失去后果。3.失去的后果和实在后果做比拟,其中的差距就是损失。4.通过多个epoch,使得每一次参数朝损失最小的方向优化。最终失去较好的模型。 呵呵,概念什么的都是弱鸡,间接实战写一下,全明确了。

January 31, 2023 · 1 min · jiezi

关于深度学习:DeepTime时间序列预测中的元学习模型

DeepTime,是一个联合应用元学习的深度工夫指数模型。通过应用元学习公式来预测将来,以应答工夫序列中的常见问题(协变量偏移和条件散布偏移——非安稳)。该模型是工夫序列预测的元学习公式协同作用的一个很好的例子。 DeepTime架构DeepTime组件 DeepTime中有三种类型的层: 岭回归多层感知机(MLP)随机傅里叶特色让咱们看看这些层在做什么: 岭回归 多层感知机(MLP) 这些是在神经网络(nn)中应用的线性回归公式。而后应用了一个ReLU函数激活。这些层非常适合将工夫指数映射到该工夫指数的工夫序列值。公式如下: 随机的傅里叶层 随机傅里叶容许mlp学习高频模式。只管随机傅里叶层须要为每个工作和数据集找到不同的超参数(只是为了不适度拟合或有余拟合),但作者通过将各种傅里叶基函数与各种尺度参数相结合来限度这种计算。 DeepTIME架构 在每个工作中,抉择一个工夫序列,而后将其分为骨干窗口(绿色)和预测窗口(蓝色)两局部。而后,而后他们通过两个彼此共享信息并与元参数关联的元模型。 在上图形容的架构上训练模型后,计算损失函数并尝试将其最小化。 其余工夫序列预测模型的区别 DeepTIME是一个工夫指数模型,就像Prophet,高斯过程等,而最近比较突出的模型如N-HiTS, Autoformer, DeepAR, Informer等都是历史价值模型。 当咱们说工夫序列的工夫指数模型时,确切的意思是预测相对随工夫变动(它思考了以后的工夫指数特色)。另一方面,历史价值模型应用以前的事件来预测将来。这个公式能让你更分明。:) 它蕴含了元学习公式,这意味着这个模型能够学会如何学习。因为它是一个工夫指数模型,能够在元学习中体现出更好的样本效率。 它采纳间接多步预计(DMS)的办法(DMS模型一次间接预测几个数据点)。另外通过多步迭代(IMS),它只预测下一个值,而后应用它来预测下一个数据点,这与ARIMA、DeepAR等雷同。 元学习给工夫序列预测带来了什么? 更好的工作泛化合乎左近工夫步长遵循部分安稳散布的假如。还蕴含了类似的工夫点将具备类似的特色的假如。 模型如何预测在每一次训练时,将数据分为两个窗口(通过应用第一个窗口预测第二个窗口)。这里为了简略起见应用PyTorch Lightning简化训练过程。 importnumpyasnp importgin importpytorch_lightningaspl frommodelsimportget_model importrandom importtorch importtorch.nn.functionalasF fromtorchimportoptim importmath fromutilsimportCheckpoint, default_device, to_tensor @gin.configurable classDeepTimeTrainer(pl.LightningModule): def__init__(self, lr, lambda_lr, weight_decay, warmup_epochs, random_seed, T_max, eta_min, dim_size, datetime_feats, ): gin.parse_config_file('/home/reza/Projects/PL_DeepTime/DeepTime/config/config.gin') super(DeepTimeTrainer, self).__init__() self.lr=lr self.lambda_lr=lambda_lr self.weight_decay=weight_decay self.warmup_epochs=warmup_epochs self.random_seed=random_seed self.lr=lr self.lambda_lr=lambda_lr self.weight_decay=weight_decay self.T_max=T_max self.warmup_epochs=warmup_epochs self.eta_min=eta_min self.model=get_model( model_type='deeptime', dim_size=dim_size, datetime_feats=datetime_feats ) defon_fit_start(self): torch.manual_seed(self.random_seed) np.random.seed(self.random_seed) random.seed(self.random_seed) deftraining_step(self, batch, batch_idx): x, y, x_time, y_time=map(to_tensor, batch) forecast=self.model(x, x_time, y_time) ifisinstance(forecast, tuple): # for models which require reconstruction + forecast loss loss=F.mse_loss(forecast[0], x) + \ F.mse_loss(forecast[1], y) else: loss=F.mse_loss(forecast, y) self.log('train_loss', loss, prog_bar=True, on_epoch=True) return {'loss': loss, 'train_loss': loss, } deftraining_epoch_end(self, outputs): avg_train_loss=torch.stack([x["train_loss"] forxinoutputs]).mean() self.log('avg_train_loss', avg_train_loss, on_epoch=True, sync_dist=True) defvalidation_step(self, batch, batch_idx): x, y, x_time, y_time=map(to_tensor, batch) forecast=self.model(x, x_time, y_time) ifisinstance(forecast, tuple): # for models which require reconstruction + forecast loss loss=F.mse_loss(forecast[0], x) + \ F.mse_loss(forecast[1], y) else: loss=F.mse_loss(forecast, y) self.log('val_loss', loss, prog_bar=True, on_epoch=True) return {'val_loss': loss} defvalidation_epoch_end(self, outputs): returnoutputs deftest_step(self, batch, batch_idx): x, y, x_time, y_time=map(to_tensor, batch) forecast=self.model(x, x_time, y_time) ifisinstance(forecast, tuple): # for models which require reconstruction + forecast loss loss=F.mse_loss(forecast[0], x) + \ F.mse_loss(forecast[1], y) else: loss=F.mse_loss(forecast, y) self.log('test_loss', loss, prog_bar=True, on_epoch=True) return {'test_loss': loss} deftest_epoch_end(self, outputs): returnoutputs @gin.configurable defconfigure_optimizers(self): group1= [] # lambda group2= [] # no decay group3= [] # decay no_decay_list= ('bias', 'norm',) forparam_name, paraminself.model.named_parameters(): if'_lambda'inparam_name: group1.append(param) elifany([modinparam_nameformodinno_decay_list]): group2.append(param) else: group3.append(param) optimizer=optim.Adam([ {'params': group1, 'weight_decay': 0, 'lr': self.lambda_lr, 'scheduler': 'cosine_annealing'}, {'params': group2, 'weight_decay': 0, 'scheduler': 'cosine_annealing_with_linear_warmup'}, {'params': group3, 'scheduler': 'cosine_annealing_with_linear_warmup'} ], lr=self.lr, weight_decay=self.weight_decay) scheduler_fns= [] forparam_groupinoptimizer.param_groups: scheduler=param_group['scheduler'] ifscheduler=='none': fn=lambdaT_cur: 1 elifscheduler=='cosine_annealing': lr=eta_max=param_group['lr'] fn=lambdaT_cur: (self.eta_min+0.5* (eta_max-self.eta_min) * ( 1.0+math.cos( (T_cur-self.warmup_epochs) / (self.T_max-self.warmup_epochs) *math.pi))) /lr elifscheduler=='cosine_annealing_with_linear_warmup': lr=eta_max=param_group['lr'] fn=lambdaT_cur: T_cur/self.warmup_epochsifT_cur<self.warmup_epochselse (self.eta_min+0.5* ( eta_max-self.eta_min) * (1.0+math.cos( (T_cur-self.warmup_epochs) / (self.T_max-self.warmup_epochs) *math.pi))) /lr else: raiseValueError(f'No such scheduler, {scheduler}') scheduler_fns.append(fn) scheduler=optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=scheduler_fns) return {'optimizer': optimizer, 'lr_scheduler': scheduler} defforward(self, batch, z_0=None): z_0=None Y=batch['Y'].to(default_device) sample_mask=batch['sample_mask'].to(default_device) available_mask=batch['available_mask'].to(default_device) # Forecasting forecasting_mask=available_mask.clone() ifself.n_time_out>0: forecasting_mask[:, 0, -self.n_time_out:] =0 Y, Y_hat, z=self.model(Y=Y, mask=forecasting_mask, idxs=None, z_0=z_0) ifself.n_time_out>0: Y=Y[:, :, -self.n_time_out:] Y_hat=Y_hat[:, :, -self.n_time_out:] sample_mask=sample_mask[:, :, -self.n_time_out:] returnY, Y_hat, sample_mask, z作者在合成数据集和真实世界数据集上进行了宽泛的试验,表明DeepTime具备极具竞争力的性能,在基于MSE的多元预测基准的24个试验中,有20个取得了最先进的后果。 ...

January 29, 2023 · 2 min · jiezi

关于深度学习:使用CNN进行2D路径规划

卷积神经网络(CNN)是解决图像分类、宰割、指标检测等工作的风行模型。本文将CNN利用于解决简略的二维门路布局问题。次要应用Python, PyTorch, NumPy和OpenCV。 工作简略地说,给定一个网格图,二维门路布局就是寻找从给定终点到所需指标地位(指标)的最短门路。机器人技术是门路布局至关重要的次要畛域之一。A、D、D* lite 和相干变体等算法就是为解决此类问题而开发的。现在强化学习被宽泛用于解决这一问题。本文将尝试仅应用卷积神经网络来解决简略的门路布局实例。 数据集咱们的次要问题是(在机器学习中判若两人)在哪里能够找到数据。尽管没有现成的数据集可用,然而咱们能够通过制作随机二维地图创立本人的门路布局数据集。创立地图的过程非常简单: 从一个 100x100 像素的方形空矩阵 M 开始。 对于矩阵中的每一项(像素),从0到1均匀分布抽取一个随机数r。如果 r > diff,则将该像素设置为 1;否则,将其设置为 0。这里的 diff 是一个参数,示意像素成为障碍物(即无奈穿梭的地位)的概率,它与在该地图上找到可行门路的难度成正比. 而后让咱们利用形态学来取得更相似于实在占用网格地图的“块状”成果。通过扭转状态构造元素的大小和 diff 参数,可能生成具备不同难度级别的地图。 对于每张地图须要抉择 2 个不同的地位:终点 (s) 和起点 (g)。该抉择同样是随便的,但这次必须确保 s 和 g 之间的欧几里得间隔大于给定阈值(使实例具备挑战性)。 最初须要找到从 s 到 g 的最短门路。这是咱们训练的指标。所以能够间接应用了风行的 D* lite 算法。 咱们生成的数据集蕴含大概 230k 个样本(170k 用于训练,50k 用于测试,15k 用于验证)。数据量很大,所以我应用 Boost c++ 库将自定义的 D lite 重写为 python 扩大模块。应用这个模块,生成超过 10k 个样本/小时,而应用纯 python 实现,速率约为 1k 个样本/小时(i7–6500U 8GB 内存)。自定义 D lite 实现的代码会在文末提供 而后就是对数据做一些简略的查看,比方删掉余弦类似度很高,终点和起点坐标太近的地图。数据和代码也都会在文末提供. 模型架构模型是经典的编码器-解码器架构,将 20 个卷积层分为 3 个卷积块(编码局部),而后是另外 3 个转置卷积块(解码局部)。每个块由 3 个 3x3 卷积层组成,每个层之间有BN和 ReLU 激活。最初,还有另外 2 个 conv 层,加上输入层。编码器的指标是找出输出压缩后的相干示意。解码器局部将尝试重建雷同的输出映射,但这次嵌入的有用信息应该有助于找到从 s 到 g 的最佳门路。 ...

January 26, 2023 · 1 min · jiezi

关于深度学习:GLM国产大模型训练加速性能最高提升3倍显存节省13低成本上手

作者|BBuf、谢子鹏、冯文 2017 年,Google 提出了 Transformer 架构,随后 BERT 、GPT、T5等预训练模型不断涌现,并在各项任务中都一直刷新 SOTA 纪录。去年,清华提出了 GLM 模型(https://github.com/THUDM/GLM),不同于上述预训练模型架构,它采纳了一种自回归的空白填充办法, 在 NLP 畛域三种次要的工作(自然语言了解、无条件生成、有条件生成)上都获得了不错的后果。 很快,清华基于 GLM 架构又推出了 GLM-130B(https://keg.cs.tsinghua.edu.c...),这是一个开源凋谢的双语(中文和英文)双向浓密模型,领有 1300 亿参数,在语言了解、语言建模、翻译、Zero-Shot 等方面都更加杰出。 预训练模型的背地离不开开源深度学习框架的助力。在此之前,GLM 的开源代码次要是由 PyTorch、DeepSpeed 以及 Apex 来实现,并且基于 DeepSpeed 提供的数据并行和模型并行技术训练了 GLM-Large(335M),GLM-515M(515M),GLM-10B(10B)等大模型,这在肯定水平上升高了 GLM 预训练模型的应用门槛。 即便如此,对更宽广范畴的普通用户来说,训练 GLM 这样的模型仍然令人头秃,同时,预训练模型的性能优化还有更大的晋升空间。 为此,咱们近期将原始的 GLM 我的项目移植到了应用 OneFlow 后端进行训练的 One-GLM 我的项目。得益于 OneFlow 和 PyTorch 无缝兼容性,咱们疾速且平滑地移植了 GLM,并胜利跑通了预训练任务(训练 GLM-large)。 此外,因为 OneFlow 原生反对 DeepSpeed 和 Apex 的很多性能和优化技术,用户不再须要这些插件就可训练 GLM 等大模型。更重要的是,针对以后 OneFlow 移植的 GLM 模型,在简略调优后就能在性能以及显存占用上有大幅晋升。 具体是怎么做到的?下文将进行揭晓。 One-GLM:https://github.com/Oneflow-In...OneFlow:https://github.com/Oneflow-In...1、GLM-large 训练性能和显存的体现首先先展现一下别离应用官网的 GLM 仓库以及 One-GLM 仓库训练 GLM-large 网络的性能和显存体现(数据并行技术),硬件环境为 A100 PCIE 40G,BatchSize 设置为 8。 ...

January 25, 2023 · 5 min · jiezi

关于深度学习:使用StableDiffusion生成视频的完整教程

本文是对于如何应用cuda和Stable-Diffusion生成视频的残缺指南,将应用cuda来减速视频生成,并且能够应用Kaggle的TESLA GPU来收费执行咱们的模型。 #install the diffuser package #pip install --upgrade pip !pipinstall--upgradediffuserstransformersscipy #load the model from stable-diffusion model card importtorch fromdiffusersimportStableDiffusionPipeline fromhuggingface_hubimportnotebook_login模型加载模型的权重是是在CreateML OpenRail-M许可下公布的。这是一个凋谢的许可证,不要求对生成的输入有任何权力,并禁止咱们成心生产非法或无害的内容。如果你对这个许可有疑难,能够看这里 https://huggingface.co/CompVi... 咱们首先要成为huggingface Hub的注册用户,并应用拜访令牌能力使代码工作。咱们应用是notebook,所以须要应用notebook_login()来进行登录的工作 执行完代码上面的单元格将显示一个登录界面,须要粘贴拜访令牌。 ifnot (Path.home()/'.huggingface'/'token').exists(): notebook_login()而后就是加载模型 model_id="CompVis/stable-diffusion-v1-4" device="cuda" pipe=StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16) pipe=pipe.to(device)显示依据文本生成图像 %%time #Provide the Keywords prompts= [ "a couple holding hands with plants growing out of their heads, growth of a couple, rainy day, atmospheric, bokeh matte masterpiece by artgerm by wlop by alphonse muhca ", "detailed portrait beautiful Neon Operator Girl, cyberpunk futuristic neon, reflective puffy coat, decorated with traditional Japanese ornaments by Ismail inceoglu dragan bibin hans thoma greg rutkowski Alexandros Pyromallis Nekro Rene Maritte Illustrated, Perfect face, fine details, realistic shaded, fine-face, pretty face", "symmetry!! portrait of minotaur, sci - fi, glowing lights!! intricate, elegant, highly detailed, digital painting, artstation, concept art, smooth, sharp focus, illustration, art by artgerm and greg rutkowski and alphonse mucha, 8 k ", "Human, Simon Stalenhag in forest clearing style, trends on artstation, artstation HD, artstation, unreal engine, 4k, 8k", "portrait of a young ruggedly handsome but joyful pirate, male, masculine, upper body, red hair, long hair, d & d, fantasy, roguish smirk, intricate, elegant, highly detailed, digital painting, artstation, concept art, matte, sharp focus, illustration, art by artgerm and greg rutkowski and alphonse mucha ", "Symmetry!! portrait of a sith lord, warrior in sci-fi armour, tech wear, muscular!! sci-fi, intricate, elegant, highly detailed, digital painting, artstation, concept art, smooth, sharp focus, illustration, art by artgerm and greg rutkowski and alphonse mucha", "highly detailed portrait of a cat knight wearing heavy armor, stephen bliss, unreal engine, greg rutkowski, loish, rhads, beeple, makoto shinkai and lois van baarle, ilya kuvshinov, rossdraws, tom bagshaw, tom whalen, alphonse mucha, global illumination, god rays, detailed and intricate environment ", "black and white portrait photo, the most beautiful girl in the world, earth, year 2447, cdx" ]显示 ...

January 24, 2023 · 5 min · jiezi

关于深度学习:7个流行的强化学习算法及代码实现

目前风行的强化学习算法包含 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。 这些算法已被用于在游戏、机器人和决策制定等各种利用中,并且这些风行的算法还在一直倒退和改良,本文咱们将对其做一个简略的介绍。 1、Q-learningQ-learning:Q-learning 是一种无模型、非策略的强化学习算法。 它应用 Bellman 方程预计最佳动作值函数,该方程迭代地更新给定状态动作对的估计值。 Q-learning 以其简略性和解决大型间断状态空间的能力而闻名。 上面是一个应用 Python 实现 Q-learning 的简略示例: importnumpyasnp # Define the Q-table and the learning rate Q=np.zeros((state_space_size, action_space_size)) alpha=0.1 # Define the exploration rate and discount factor epsilon=0.1 gamma=0.99 forepisodeinrange(num_episodes): current_state=initial_state whilenotdone: # Choose an action using an epsilon-greedy policy ifnp.random.uniform(0, 1) <epsilon: action=np.random.randint(0, action_space_size) else: action=np.argmax(Q[current_state]) # Take the action and observe the next state and reward next_state, reward, done=take_action(current_state, action) # Update the Q-table using the Bellman equation Q[current_state, action] =Q[current_state, action] +alpha* (reward+gamma*np.max(Q[next_state]) -Q[current_state, action]) current_state=next_state下面的示例中,state_space_size 和 action_space_size 别离是环境中的状态数和动作数。 num_episodes 是要为运行算法的轮次数。 initial_state 是环境的起始状态。 take_action(current_state, action) 是一个函数,它将以后状态和一个动作作为输出,并返回下一个状态、处分和一个批示轮次是否实现的布尔值。 ...

January 23, 2023 · 4 min · jiezi

关于深度学习:可视化VIT中的注意力

2022年, Vision Transformer (ViT)成为卷积神经网络(cnn)的无力竞争对手,卷积神经网络目前是计算机视觉畛域的最先进技术,广泛应用于许多图像识别利用。在计算效率和精度方面,ViT模型超过了目前最先进的(CNN)简直四倍。 ViT是如何工作的?ViT模型的性能取决于优化器、网络深度和特定于数据集的超参数等, 规范 ViT stem 采纳 16 *16 卷积和 16 步长。 CNN 将原始像素转换为特色图。而后,tokenizer 将特色图转换为一系列令牌,这些令牌随后被送入transformer。而后transformer应用注意力办法生成一系列输入令牌。 projector 最终将输入令牌标记从新连贯到特色图。 vision transformer模型的整体架构如下: 将图像拆分为补丁(固定大小)展平图像块从这些展平的图像块中创立低维线性嵌入包含地位嵌入将序列作为输出发送到transformer编码器应用图像标签预训练 ViT 模型,而后在宽泛的数据集上进行训练在图像分类的上游数据集进行微调可视化注意力ViT中最次要的就是注意力机制,所以可视化注意力就成为理解ViT的重要步骤,所以咱们这里介绍如何可视化ViT中的注意力 导入库 importos importtorch importnumpyasnp importmath fromfunctoolsimportpartial importtorch importtorch.nnasnn importipywidgetsaswidgets importio fromPILimportImage fromtorchvisionimporttransforms importmatplotlib.pyplotasplt importnumpyasnp fromtorchimportnn importwarnings warnings.filterwarnings("ignore")创立一个VIT deftrunc_normal_(tensor, mean=0., std=1., a=-2., b=2.): # type: (Tensor, float, float, float, float) -> Tensor return_no_grad_trunc_normal_(tensor, mean, std, a, b) def_no_grad_trunc_normal_(tensor, mean, std, a, b): # Cut & paste from PyTorch official master until it's in a few official releases - RW # Method based on https://people.sc.fsu.edu/~jburkardt/presentations/truncated_normal.pdf defnorm_cdf(x): # Computes standard normal cumulative distribution function return (1.+math.erf(x/math.sqrt(2.))) /2. defdrop_path(x, drop_prob: float=0., training: bool=False): ifdrop_prob==0.ornottraining: returnx keep_prob=1-drop_prob # work with diff dim tensors, not just 2D ConvNets shape= (x.shape[0],) + (1,) * (x.ndim-1) random_tensor=keep_prob+ \ torch.rand(shape, dtype=x.dtype, device=x.device) random_tensor.floor_() # binarize output=x.div(keep_prob) *random_tensor returnoutput classDropPath(nn.Module): """Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks). """ def__init__(self, drop_prob=None): super(DropPath, self).__init__() self.drop_prob=drop_prob defforward(self, x): returndrop_path(x, self.drop_prob, self.training) classMlp(nn.Module): def__init__(self, in_features, hidden_features=None, out_features=None, act_layer=nn.GELU, drop=0.): super().__init__() out_features=out_featuresorin_features hidden_features=hidden_featuresorin_features self.fc1=nn.Linear(in_features, hidden_features) self.act=act_layer() self.fc2=nn.Linear(hidden_features, out_features) self.drop=nn.Dropout(drop) defforward(self, x): x=self.fc1(x) x=self.act(x) x=self.drop(x) x=self.fc2(x) x=self.drop(x) returnx classAttention(nn.Module): def__init__(self, dim, num_heads=8, qkv_bias=False, qk_scale=None, attn_drop=0., proj_drop=0.): super().__init__() self.num_heads=num_heads head_dim=dim//num_heads self.scale=qk_scaleorhead_dim**-0.5 self.qkv=nn.Linear(dim, dim*3, bias=qkv_bias) self.attn_drop=nn.Dropout(attn_drop) self.proj=nn.Linear(dim, dim) self.proj_drop=nn.Dropout(proj_drop) defforward(self, x): B, N, C=x.shape qkv=self.qkv(x).reshape(B, N, 3, self.num_heads, C// self.num_heads).permute(2, 0, 3, 1, 4) q, k, v=qkv[0], qkv[1], qkv[2] attn= (q@k.transpose(-2, -1)) *self.scale attn=attn.softmax(dim=-1) attn=self.attn_drop(attn) x= (attn@v).transpose(1, 2).reshape(B, N, C) x=self.proj(x) x=self.proj_drop(x) returnx, attn classBlock(nn.Module): def__init__(self, dim, num_heads, mlp_ratio=4., qkv_bias=False, qk_scale=None, drop=0., attn_drop=0., drop_path=0., act_layer=nn.GELU, norm_layer=nn.LayerNorm): super().__init__() self.norm1=norm_layer(dim) self.attn=Attention( dim, num_heads=num_heads, qkv_bias=qkv_bias, qk_scale=qk_scale, attn_drop=attn_drop, proj_drop=drop) self.drop_path=DropPath( drop_path) ifdrop_path>0.elsenn.Identity() self.norm2=norm_layer(dim) mlp_hidden_dim=int(dim*mlp_ratio) self.mlp=Mlp(in_features=dim, hidden_features=mlp_hidden_dim, act_layer=act_layer, drop=drop) defforward(self, x, return_attention=False): y, attn=self.attn(self.norm1(x)) ifreturn_attention: returnattn x=x+self.drop_path(y) x=x+self.drop_path(self.mlp(self.norm2(x))) returnx classPatchEmbed(nn.Module): """ Image to Patch Embedding """ def__init__(self, img_size=224, patch_size=16, in_chans=3, embed_dim=768): super().__init__() num_patches= (img_size//patch_size) * (img_size//patch_size) self.img_size=img_size self.patch_size=patch_size self.num_patches=num_patches self.proj=nn.Conv2d(in_chans, embed_dim, kernel_size=patch_size, stride=patch_size) defforward(self, x): B, C, H, W=x.shape x=self.proj(x).flatten(2).transpose(1, 2) returnx classVisionTransformer(nn.Module): """ Vision Transformer """ def__init__(self, img_size=[224], patch_size=16, in_chans=3, num_classes=0, embed_dim=768, depth=12, num_heads=12, mlp_ratio=4., qkv_bias=False, qk_scale=None, drop_rate=0., attn_drop_rate=0., drop_path_rate=0., norm_layer=nn.LayerNorm, **kwargs): super().__init__() self.num_features=self.embed_dim=embed_dim self.patch_embed=PatchEmbed( img_size=img_size[0], patch_size=patch_size, in_chans=in_chans, embed_dim=embed_dim) num_patches=self.patch_embed.num_patches self.cls_token=nn.Parameter(torch.zeros(1, 1, embed_dim)) self.pos_embed=nn.Parameter( torch.zeros(1, num_patches+1, embed_dim)) self.pos_drop=nn.Dropout(p=drop_rate) # stochastic depth decay rule dpr= [x.item() forxintorch.linspace(0, drop_path_rate, depth)] self.blocks=nn.ModuleList([ Block( dim=embed_dim, num_heads=num_heads, mlp_ratio=mlp_ratio, qkv_bias=qkv_bias, qk_scale=qk_scale, drop=drop_rate, attn_drop=attn_drop_rate, drop_path=dpr[i], norm_layer=norm_layer) foriinrange(depth)]) self.norm=norm_layer(embed_dim) # Classifier head self.head=nn.Linear( embed_dim, num_classes) ifnum_classes>0elsenn.Identity() trunc_normal_(self.pos_embed, std=.02) trunc_normal_(self.cls_token, std=.02) self.apply(self._init_weights) def_init_weights(self, m): ifisinstance(m, nn.Linear): trunc_normal_(m.weight, std=.02) ifisinstance(m, nn.Linear) andm.biasisnotNone: nn.init.constant_(m.bias, 0) elifisinstance(m, nn.LayerNorm): nn.init.constant_(m.bias, 0) nn.init.constant_(m.weight, 1.0) definterpolate_pos_encoding(self, x, w, h): npatch=x.shape[1] -1 N=self.pos_embed.shape[1] -1 ifnpatch==Nandw==h: returnself.pos_embed class_pos_embed=self.pos_embed[:, 0] patch_pos_embed=self.pos_embed[:, 1:] dim=x.shape[-1] w0=w//self.patch_embed.patch_size h0=h//self.patch_embed.patch_size # we add a small number to avoid floating point error in the interpolation # see discussion at https://github.com/facebookresearch/dino/issues/8 w0, h0=w0+0.1, h0+0.1 patch_pos_embed=nn.functional.interpolate( patch_pos_embed.reshape(1, int(math.sqrt(N)), int( math.sqrt(N)), dim).permute(0, 3, 1, 2), scale_factor=(w0/math.sqrt(N), h0/math.sqrt(N)), mode='bicubic', ) assertint( w0) ==patch_pos_embed.shape[-2] andint(h0) ==patch_pos_embed.shape[-1] patch_pos_embed=patch_pos_embed.permute(0, 2, 3, 1).view(1, -1, dim) returntorch.cat((class_pos_embed.unsqueeze(0), patch_pos_embed), dim=1) defprepare_tokens(self, x): B, nc, w, h=x.shape x=self.patch_embed(x) # patch linear embedding # add the [CLS] token to the embed patch tokens cls_tokens=self.cls_token.expand(B, -1, -1) x=torch.cat((cls_tokens, x), dim=1) # add positional encoding to each token x=x+self.interpolate_pos_encoding(x, w, h) returnself.pos_drop(x) defforward(self, x): x=self.prepare_tokens(x) forblkinself.blocks: x=blk(x) x=self.norm(x) returnx[:, 0] defget_last_selfattention(self, x): x=self.prepare_tokens(x) fori, blkinenumerate(self.blocks): ifi<len(self.blocks) -1: x=blk(x) else: # return attention of the last block returnblk(x, return_attention=True) defget_intermediate_layers(self, x, n=1): x=self.prepare_tokens(x) # we return the output tokens from the `n` last blocks output= [] fori, blkinenumerate(self.blocks): x=blk(x) iflen(self.blocks) -i<=n: output.append(self.norm(x)) returnoutput classVitGenerator(object): def__init__(self, name_model, patch_size, device, evaluate=True, random=False, verbose=False): self.name_model=name_model self.patch_size=patch_size self.evaluate=evaluate self.device=device self.verbose=verbose self.model=self._getModel() self._initializeModel() ifnotrandom: self._loadPretrainedWeights() def_getModel(self): ifself.verbose: print( f"[INFO] Initializing {self.name_model} with patch size of {self.patch_size}") ifself.name_model=='vit_tiny': model=VisionTransformer(patch_size=self.patch_size, embed_dim=192, depth=12, num_heads=3, mlp_ratio=4, qkv_bias=True, norm_layer=partial(nn.LayerNorm, eps=1e-6)) elifself.name_model=='vit_small': model=VisionTransformer(patch_size=self.patch_size, embed_dim=384, depth=12, num_heads=6, mlp_ratio=4, qkv_bias=True, norm_layer=partial(nn.LayerNorm, eps=1e-6)) elifself.name_model=='vit_base': model=VisionTransformer(patch_size=self.patch_size, embed_dim=768, depth=12, num_heads=12, mlp_ratio=4, qkv_bias=True, norm_layer=partial(nn.LayerNorm, eps=1e-6)) else: raisef"No model found with {self.name_model}" returnmodel def_initializeModel(self): ifself.evaluate: forpinself.model.parameters(): p.requires_grad=False self.model.eval() self.model.to(self.device) def_loadPretrainedWeights(self): ifself.verbose: print("[INFO] Loading weights") url=None ifself.name_model=='vit_small'andself.patch_size==16: url="dino_deitsmall16_pretrain/dino_deitsmall16_pretrain.pth" elifself.name_model=='vit_small'andself.patch_size==8: url="dino_deitsmall8_300ep_pretrain/dino_deitsmall8_300ep_pretrain.pth" elifself.name_model=='vit_base'andself.patch_size==16: url="dino_vitbase16_pretrain/dino_vitbase16_pretrain.pth" elifself.name_model=='vit_base'andself.patch_size==8: url="dino_vitbase8_pretrain/dino_vitbase8_pretrain.pth" ifurlisNone: print( f"Since no pretrained weights have been found with name {self.name_model} and patch size {self.patch_size}, random weights will be used") else: state_dict=torch.hub.load_state_dict_from_url( url="https://dl.fbaipublicfiles.com/dino/"+url) self.model.load_state_dict(state_dict, strict=True) defget_last_selfattention(self, img): returnself.model.get_last_selfattention(img.to(self.device)) def__call__(self, x): returnself.model(x)创立可视化函数 ...

January 19, 2023 · 4 min · jiezi

关于深度学习:CS-285-DRL-Homework-2Policy-Gradients-策略优化

Exp 1:原始策略优化(Vanilla Policy Gradient)Vanilla adj. 一般的,没有新意的;香草的训练算法总体思路次要的训练算法集中在 RL_Trainer.run_training_loop 中。通过观察一个循环(iteration)的调用过程,可总结为: 收集多个路线,,取得 train_batch_size 个时刻的数据 存在 replay buffer 中上一步齐全完结之后,从 buffer 中采样最近 batch_size 个时刻数据用数据训练模型 先更新策略再更新 baseline (第一节还不须要)第一、二步是齐全串行的。且通过观察代码实现可知,尽管有 buffer 作数据直达,但 train_batch_size 与 batch_size 定义为相等,每次训练的数据都是上次模型更新之后的。因而仍然是 On-Policy RL。 第一局部次要须要补全 PGAgent.train,这一函数又牵扯到计算 总收益 Q,以及 policy update 两种 \( \hat{Q} \) 的计算:Reward-to-go or Not留神这里是 \( \hat{Q} \) (Q-hat),是 单个蒙特卡洛采样门路的收益值,而不是 Q-learning 中神经网络给出的 状态-动作对 的预测价值。 Reward-to-go 就是思考因果的 Q 值,t 工夫点的的 Q 不思考 t 之前工夫点的收益。 不思考因果的:求和即可,每个地位的值都和时刻 t 无关,都是一样的。 ##################################################### ################## HELPER FUNCTIONS ################# ##################################################### def _discounted_return(self, rewards): """ Helper function Input: list of rewards {r_0, r_1, ..., r_t', ... r_T} from a single rollout of length T Output: list where each index t contains sum_{t'=0}^T gamma^t' r_{t'} """ discounted_sum, discount = 0, 1 for rr in rewards: discounted_sum += discount * rr discount *= self.gamma return [discounted_sum for i in range(len(rewards))]思考 Reward-to-go 的:应用迭代的方法 ...

January 18, 2023 · 5 min · jiezi

关于深度学习:CuPL-利用大规模的语言模型更高效地生成提示

出品人:Towhee 技术团队 顾梦佳凋谢词汇模型(比方CLIP)在推理过程中对自然语言指定的任意一组类别进行分类,是一种很有前途的图像分类新范例。这种称为“提醒”的自然语言通常由一组手写模板组成。为了更高效且独立地生成更精确的提醒,CuPL(通过语言模型创立自定义提醒)将凋谢词汇模型与大型语言模型 (LLM) 相结合,利用 LLM 中蕴含的常识来生成许多为每个对象类别定制的描述性句子。这种间接而通用的办法可能进步了一系列零样本图像分类基准的准确性,包含在 ImageNet 上的性能进步了一个百分点以上。另外,这种办法不须要额定的训练并且齐全放弃零样本。Standard Zero-shot vs CuPLCuPL 次要蕴含两个步骤:首先利用大型语言模型为给定的类别生成描述性题目,而后一个凋谢的词汇模型(比方 CLIP)会应用这些题目作为执行分类的提醒。CuPL 中的提醒蕴含两种类型,别离用于提醒/询问物体形容(LLM-prompts)与形容物体类别(image-prompts),而只有后一种提醒会被用于零样本图像分类。相干材料:代码地址:https://github.com/sarahpratt...论文链接:https://arxiv.org/abs/2209.03...

January 17, 2023 · 1 min · jiezi

关于深度学习:YOLO家族系列模型的演变从v1到v8下

昨天的文章中,咱们回顾了 YOLO 家族的前 9 个架构。本文中将持续总结最初3个框架,还有本月最新公布的YOLO V8. YOLORChien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao “You Only Learn One Representation: Unified Network for Multiple Tasks”2021/05, https://arxiv.org/pdf/2105.04... 这个名称的翻译可能会有不同,“你只学习一种示意”。作者说这与之前的YOLO版本无关,概念也与YOLO有所不同。 因为有隐性常识(以前教训的概括)和显性常识(通过感官感知)。所以了解图片中显示的内容的人比不了解的一般神经网络可能更好地解决。 卷积神经网络通常执行一个单个的特定的工作, 而 YOLOR 的指标是同时能够训练它们同时解决多个工作,在他们学习解析输出以取得输入的同时,YOLOR 试图迫使卷积网络做两件事: 理解如何取得输入试图确定所有不同的输入可能是什么。所以模型有多个输入,而不是一个输入。 YOLOR 试图联合显性和隐性常识。对于神经网络,它们的显性常识存储在凑近输出的层中,而隐性常识存储在较远的层中。YOLOR 成为一个对立的神经网络。 论文介绍了神经网络中内隐性常识与显性常识整合过程中的关键问题: 在隐式常识的学习过程中引入了核空间对齐、预测细化和多任务学习等办法。向量、神经网络和矩阵合成是用来建模隐性常识和剖析其有效性的办法。 长处 公布时的检测精度和检出率高于竞争对手 YOLOv6 / MT-YOLOv6Meituan, China. “YOLOv6: A Single-Stage Object Detection Framework for IndustrialApplications”2022/09, https://arxiv.org/pdf/2209.02... 美团的博客地址:https://tech.meituan.com/2022... v6的改良次要集中在三个方面: backbone 和 neck局部对硬件进行了优化设计forked head 更精确更无效的训练策略backbone 和 neck的设计是利用硬件方面的劣势,如处理器外围的计算个性,内存带宽等,以进行无效的推理。 backbone neck 作者别离应用Rep-Pan和EfficientRep块从新设计了架构的局部。 ...

January 16, 2023 · 2 min · jiezi

关于深度学习:新岁序开和Jina-AI共同码梦-奖品攻略大揭秘

新岁序开,和Jina AI独特码梦! (奖品攻略大揭秘) Jina AI 开源社区致力于促成 多模态 AI 技术 的利用落地以及流传,始终以来,咱们都为领有这样一个全球化、多元化和高速倒退的社区而感到骄傲和感谢!正值新年之际,咱们汇集了开发者社区、合作伙伴们,庆贺咱们独特发明的回顾,并瞻望行将到来的 2023 年!欢送来到「Nice 兔 Meet You|兔年迎新面对面」,和 Jina AI 一起参加 1 月 16 日早晨 8 - 9 点在中文社区面对面·特地策动流动吧!本文为你献上流动超强攻略,带你解锁如何集齐最全的流动奖品! Nice 兔 Meet You 流动议程 在这次流动中,Jina AI 的工程师、社区和设计团队将和大家一起回顾 2022 年的成绩,并瞻望 2023 年的新布局。Jina AI 的社区明星们也都会在流动现场分享乏味产品和离奇思路。最初,咱们还将预报 2023 Jina AI 社区全新我的项目,为你提供了各式各样参加到 Jina AI 开源社区的机会,并且筹备了丰盛周边等你来赢取。Jina AI 兔团团新年礼盒 Jina AI 兔团团新年礼盒,让你领有更舒适的技术年! 支付规定 报名退出腾讯会议 在流动中参加互动答复正确 Jina 生态发问,送!第一个在流动云合影开摄像头,送!在聊天室留下最走心的新年欲望留言,送! 关上备忘录 / 搬运朋友圈,当初就开始写你的新年欲望吧!工作、生存、人际关系,只有是欲望、不限主题最初填写流动反馈问卷,咱们将抽取最具反馈价值的 2 位,送出 2 套! 流动开始前,不要遗记预习 Jina,提前做好流动筹备,领先博得流动奖品!  预习材料 官网:jina.ai文档:docs.jina.aiGitHub:get.jina.ai ...

January 14, 2023 · 1 min · jiezi

关于深度学习:使用Stable-Diffusion和Pokedex的描述生成神奇宝贝图片

还记得咱们以前应用GAN、Clip、DALL-E生成神奇宝贝的文章吗,当初是时候应用Stable Diffusion了 在本文中,我将展现如何从神奇宝贝系列不同游戏中的Pokedex条目中获取神奇宝贝形容,并应用Stable Diffusion依据这些蔑视生成图片,这样能够看看AI如何解释这些形容的。这篇文章中,我只生成了最后的150个神奇宝贝,如果须要其余的能够自行尝试。 第一步:获取Pokedex条目第一件事是取得Pokedex的形容。这些Pokedex的形容将作为生成图片的文本提醒。我最后的想法是为pokemon.com编写一个webscraper,Pokedex Number (NPN)执行搜寻查问。这并不是很难做到,然而有一个叫做PyPokedex的小Python库十分的好用,如果你对编程和神奇宝贝感兴趣,我倡议你去看看! PyPokedex应用PokeAPI来获取神奇宝贝数据,所以能够应用PyPokedex取得各种信息,如NPN,名称,身高,体重,类型,根底统计等。除此之外PyPokedex还有一个叫做“get_description”的办法,它以字典的模式返回每个不同游戏的Pokedex形容。 一个根本的PyPokedex查问如下所示: pokemon=pypokedex.get(dex=poke_id)这个查问会返回一个实例化的对象,该对象将蕴含基于NPN值的给定神奇宝贝的所有信息。 poke_name=pokemon.name下一步就是用get_descriptions办法获取Pokedex形容。这里咱们应用《Pokemon Yellow》的Pokedex中的形容,因为这代大家都应该晓得 yellow_description=pokemon.get_descriptions()[ver]而后将这两个后果联合起来,这样给AI的提醒就好了: prompt = poke_name + " " + yellow_description这里咱们应用神奇宝贝的名字作为提醒的一部分,因为有一些Pokedex条目有点含糊,并不总是产生好后果。所以神奇宝贝的名字,可能发明出更像是原版的“真正变体”。如果你不喜爱也能够去掉,但我对这样的后果很称心。 第二步:设置Stable AI咱们曾经有文本了,上面开始筹备Stable Diffusion模型。用上面这行代码装置必要的包: %pipinstall—quiet—upgradediffuserstransformersacceleratemediapyscipyftfyspacy还须要蕴含xformers包来帮忙咱们创立图像。这个须要依据你的python版本训责相应的wheels包,肯定不要错了 github_url="https://github.com/brian6091/xformers-wheels" xformer_id="0.0.15.dev0+4c06c79" xformers_wheels=f"xformers-{xformer_id}.d20221205-cp38-cp38-linux_x86_64.whl %pipinstall-q {github_url}/releases/download/{xformer_id}/{xformers_wheels}接下来,指定想要应用的模型。这里抉择dreamlike-photoreal-2.0。 model_id=“dreamlike-art/dreamlike-photoreal-2.0”咱们这里应用简略,疾速的办法:间接应用StableDiffusionPipeline生成图片 importmediapyasmedia importtorch fromdiffusersimportStableDiffusionPipeline device="cuda" ifmodel_id.startswith("stabilityai/"): model_revision="fp16" else: model_revision=None ifschedulerisNone: pipe=StableDiffusionPipeline.from_pretrained( model_id, torch_dtype=torch.float16, revision=model_revision, ) else: pipe=StableDiffusionPipeline.from_pretrained( model_id, scheduler=scheduler, torch_dtype=torch.float16, revision=model_revision, ) pipe=pipe.to(device) pipe.enable_xformers_memory_efficient_attention() ifmodel_id.endswith('-base'): image_length=512 else: image_length=768当初曾经筹备好所有步骤了,上面开始正式生成了: remove_safety=False num_images=4 ifremove_safety: negative_prompt=None else: negative_prompt="nude, naked" images=pipe( prompt, height=image_length, width=image_length, num_inference_steps=25, guidance_scale=9, num_images_per_prompt=num_images, negative_prompt=negative_prompt, ).images media.show_images(images)第三步:把这些代码整合成函数下面的代码曾经能够依据单个查问生成单个图片。然而咱们须要解决150个。所以我将他们整合成一个函数,循环调用。 ...

January 14, 2023 · 3 min · jiezi

关于深度学习:2022年深度学习在时间序列预测和分类中的研究进展综述

工夫序列预测的transformers的衰败和工夫序列嵌入办法的衰亡,还有异样检测、分类也获得了提高 2022年整个畛域在几个不同的方面获得了停顿,本文将尝试介绍一些在过来一年左右的工夫里呈现的更有前景和要害的论文,以及Flow Forecast [FF]预测框架。 工夫序列预测1、Are Transformers Really Effective for Time Series Forecasting?https://arxiv.org/pdf/2205.13... Transformer相干钻研比照Autoformer、Pyraformer、Fedformer等,它们的成果和问题 随着 Autoformer (Neurips 2021)、Pyraformer (ICLR 2022)、Fedformer (ICML 2022)、EarthFormer (Neurips 2022) 和 Non-Stationary Transformer (Neurips) 等模型的呈现,工夫序列预测架构的 Transformer 系列一直倒退壮)。然而这些模型精确预测数据并优于现有办法的能力依然存在疑难,特地是依据新钻研(咱们将在稍后探讨)。 Autoformer :扩大并改良了 Informer 模型的性能。Autoformer 具备主动关联机制,使模型可能比规范注意力更好地学习工夫依赖性。它旨在精确合成时态数据的趋势和节令成分。 Pyraformer:作者介绍了“金字塔留神模块 (PAM),其中尺度间树结构总结了不同分辨率下的特色,尺度内相邻连贯对不同范畴的工夫依赖性进行建模。” Fedformer:该模型侧重于在工夫序列数据中捕获寰球趋势。作者提出了一个季节性趋势合成模块,旨在捕获工夫序列的全局特色。 Earthformer: 可能是这些论文中最独特的一个,它特地专一于预测地球零碎,如天气、气象和农业等。介绍了一种新的cuboid 注意力架构。这篇论文应该是后劲微小的望,因为在河流和暴洪预测方面的钻研,许多经典的Transformer都失败了。 Non-Stationary Transformer:这是应用transformer 用于预测的最新论文。作者旨在更好地调整 Transformer 以解决非安稳工夫序列。他们采纳两种机制:去安稳留神里和一系列安稳化机制。这些机制能够插入到任何现有的Transformer模型中,作者测试将它们插入 Informer、Autoformer 和传统的Transformer 中,都能够进步性能(在附录中,还表明它能够进步 Fedformer 的性能)。 论文的评估办法:与 Informer 相似,所有这些模型(Earthformer 除外)都在电力、交通、金融和天气数据集上进行了评估。次要依据均方误差 (MSE) 和均匀绝对误差 (MAE) 指标进行评估: 这篇论文很好,然而它只比照了Transformer相干的论文,其实应该与更简略的办法进行比拟,比方简略的线性回归、LSTM/GRU、甚至是XGB等树形模型。另外就是它们应该不仅仅局限在一些规范数据集,因为我在其余工夫序列相干数据集上没有看到很好的体现。比如说informer精确预测河流流量方面遇到了微小的问题,与LSTM或甚至是一般的Transformer相比,它的体现通常很差。 另外就是因为与计算机视觉不同,图像维度至多放弃不变,工夫序列数据在长度、周期性、趋势和季节性方面可能存在微小差别,因而须要更大范畴的数据集。 在OpenReview的Non-Stationary Transformer的评论中,一位评论者也表白了这些问题,但它在最终的元评论中被否决了: “因为该模型属于Transformer畛域,而且Transformer之前曾经在许多工作中体现出了最先进的程度,我认为没有必要与其余‘家族’办法进行比拟。”这是一个十分有问题的论点,并导致钻研在事实世界中不足适用性。就像咱们所认知的:XGB在表格数据的压倒性劣势还没有扭转,Transformer的闭门造车又有什么意义?每次都超过,每次都被吊打。 作为一个在实践中器重最先进的办法和翻新模型的人,当我花了几个月的工夫试图让一个所谓的“好”模型工作时,然而最初却发现,他的体现还不如简略的线性回归,那这几个月有什么意思?这个所谓的好”模型又有什么意义。 ...

January 12, 2023 · 2 min · jiezi

关于深度学习:3D-CG软件blender入门教程

大家晓得这个名为“blender”的软件吗? 做设计或者影像相干工作的人,以及对这个方面有趣味的人,想必都据说过这个软件吧! blender是次要以建模和影像编辑来制作3DCG的软件。也就是应用通过本人制作的模型来制作影像作品。这个软件从几年前开始遍及,在日本也常常会用在二次创作或者Fab下面。并且它和游戏开发软件“Unity”之间的分割也十分多。因而,这样的文章仿佛显得有点迟,然而从目前来看,3DCG的制作技术曾经有了一个长足的提高,所以我感觉十分有必要重新认识一下这个软件。 从这点来说,blender最好的局部就是在于——性能多到齐全不会感觉这是个免费软件。 首先,blender最大的特色能够说是完全免费这一点了。置信有很多人在提起3DCG制作软件时,第一印象都会感觉其价格十分的低廉。比方在3DCG制作软件中具备代表意义的MAYA或者MAX,这些业余制作软件的价格就达到了70万~80万日元(4万多RMB)。 就算是略微便宜一些的软件个别都须要数十万日元。也存在相似blender这样的免费软件,然而这些软件往往不是机能有所限度就是单纯的品质低下。在这些收费的软件中,blender曾经能够和那些高性能3D软件比肩了。 并且,因为其是一款开源的软件,所以会因为全世界开发者的致力而让其一直的进化,十分的厉害。一、blender的初步意识咱们启动blender后,画像就会像上图一样,在画面中配置了光源、镜头以及立方体。想必有不少人这个时候会尝试对这个立方体做些什么。但左键点击也只会呈现一个小菜单,并不能触碰到立方体。3D软件中有很多都采纳了非凡的UI。它们可能会和PC或者adobe相干的产品操作齐全不同。上面会为大家讲解,在应用blender时咱们须要晓得的一些操作。右键为抉择、左键为确定、挪动为G。其它的软件可能在抉择后能够间接挪动,然而在blender中,咱们须要在抉择的状态中按下G键。 A为全抉择,再按一次解除。想要重置抉择的时候能够应用这个指令。打消对象为X。如果习惯应用photoshop等软件,很多人都会按DELITE吧(图片为object模式的状况)。shift+A来追加网孔。能够追加新的对象。顺带一提,鼠标操作以及指令都是能够自定义的。如果有需要的话能够在File → User Preferences或者ctrl+alt+U关上用户偏好来进行设定。关上用户偏好,点击input后点击抉择图片局部的复选框。 二、3DCG基础知识3DCG制作的过程次要为上面这个过程,然而也存在步骤调换的状况。建模(造成)素材的设定质感的贴图动作设定场景(光源和镜头)的设定渲染(摄影)三、建模3D对象依据顶点(Vertices)、边(edge)、面(face)这个3个因素来成立的。 依据顶点相互连贯而敞开的中央会设定为面,而这个过程咱们称之为建模。而后在blender中制作的时候,object模式和edit模式能够应用tab键来进行切换。object模式在这个模式下,咱们能够让对象单位进行挪动、旋转、扩充放大等操作。edit模式对对象的形态进行粗疏编辑的模式。根本以基顶点(Vertices)、边(edge)、面(face)3个因素来进行。根本的了解为应用edit模式来造成对象→object模式来对对象的外围进行编辑和确定(地位和大小)。建模的第一步那么,让咱们理论的应用一下edit模式吧!咱们看到窗口的上面,通过橙色框来进行模式的确认。而后通过黄色框的中央来确定顶点(Vertices)、边(edge)、面(face)之中,咱们挪动的是哪个。 编辑因素的icon从左开始是顶点(Vertices)、边(edge)、面(face)。尝试挪动吧!顶点边 面四、总结在这里对抉择的象进行挪动、成型的根底想必大家都有肯定的了解了。这次对3D CG软件blender的解说算是十分入门的货色,前面的文章我将会缓缓为大家带来更加深刻的介绍以及实际。

January 10, 2023 · 1 min · jiezi

关于深度学习:OneFlow-源码阅读-11基础计算接口-Primitive

OneFlow v0.8.0 公布文档中的第 5 节对框架的“多设施适配”作了阐明,原文摘录如下: OneFlow 提供简洁高效易扩大的硬件形象层 EP(Execution Provider),以应答适配不同硬件的复杂性。引入硬件形象层之后,用户无需关注底层硬件和框架的具体实现细节,框架的各个模块无需改变便能够适配新的硬件设施,同时,用户只需依照硬件形象接口的约定和硬件设施的理论状况,实现一系列接口,便能够实现硬件的适配工作。 EP 还定义了一组根底计算接口 Primitive,基于 Primitive 接口从新实现了 Kernel。相比 EP 提供的运行时接口,Primitive 提供的接口更加灵便,不同接口之间互相独立,每一个接口示意了某种硬件设施能够提供的特定的计算能力。ep 模块次要包含两局部。一部分是之前探讨的设施治理,依据用户提供的信息能获取设施实例,将设施形象出 Stream、Event、内存治理等接口。 另一部分就是根底计算接口 Primitive。这个笔记只粗略讨论一下 Primitive 的概念,大抵是什么样子的,蕴含哪些内容;但不会波及具体计算的设计和实现。 1 primitive 是什么?粗略地说,根底计算接口是指 primitive 目录下定义的二十来个根底计算接口类。它们都是 Primitive 的子类。这些接口类型通常只申明一个 Launch 办法,理论反对哪些计算是由针对具体设施的实现决定的。 各根底计算接口如下表所示: Primitive 接口类型设施实现反对的操作补充阐明AddCPU, CUDA, OneDnnDataType BatchMatmulBatchMatmulImpl是否转置转发给 BroadcastMatmulBroadcastElementwiseBinaryCPU, CUDA, OneDnnBinaryOp反对 BinaryOp 操作BroadcastElementwiseUnaryCPU, CUDAUnaryOp反对 UnaryOp 操作BroadcastMatmulBroadcastMatmulImpl是否转置CPU 和 CUDA 实现都是基于模版类BroadcastMatmulImplCastCPU, CUDADataType ConstantPadCPU, CUDADataType CopyNdCPU, CUDADimSize ElementwiseUnaryCPU, CUDAUnaryOp反对 UnaryOp 操作FillCPU, CUDADataType LogSoftmaxBackwardCPU, CUDA, OneDnnDataType与 SoftmaxBackward 复用实现。LogSoftmaxCPU, CUDA, OneDnnDataType与 Softmax 复用实现。SoftmaxImpl 的基类 SoftmaxBase 可能是 Softmax 或 LogSoftmax。MatmulMatmulImpl是否转置转发给 BatchMatmulMemcpyCPU, CUDA设施拷贝方向Host2Device、Device2Host ……MemsetCPU, CUDA OneHot DataType这个仿佛没有注册,也没有实现?PermuteCPU, CUDA, OneDnnDimSize SoftmaxBackwardCPU, CUDA, OneDnn 与 LogSoftmaxBackward 复用实现。SoftmaxCPU, CUDA, OneDnn 与 LogSoftmax 复用实现。TensorFillCPU, CUDADataType 2 局部计算接口的阐明2.1 ElementwiseUnary2.1.1 relu kernel 的执行过程relu kernel 就是通过 ElementwiseUnary 执行计算的。注册 relu kernel 的 SetCreateFn 函数执行相似如下代码的操作。UnaryPrimitiveKernel 结构时会保留 primitive_factory_func_。 ...

January 10, 2023 · 3 min · jiezi

关于深度学习:微软提出通用解码器-XDecoder支持图像分割和语言分词

出品人:Towhee 技术团队 王翔宇、顾梦佳X-Decoder 是一种通用解码模型,能够无缝实现像素级图像宰割和语言分词。 它的输出反对两种类型的查问:通用非语义查问和基于文本输出的语义查问,可能在同一语义空间中解码不同的像素和分词级别的输入。凭借新鲜的设计,X-Decoder 首次提供了一种对立形式用于反对所有类型的图像宰割和各种视觉语言工作。无需任何伪标签,在对无限的宰割数据和数百万图像文本对的混合集进行预训练后,X-Decoder 体现出对宽泛上游工作(零样本和微调设置)的弱小可迁移性。值得注意的是,它在八个数据集上均实现了最优性能。X-Decoder after pretraining supports all types of image segmentation tasks.X-Decoder 的框架设计遵循了编码器-解码器构造。它首先会应用一个图像编码器抽取出图片特色,而后应用文本编码器编码文本查问。图像特色、文本查问和多个隐查问在通过 X-Decoder 后,别离输入像素级别的掩码和分词级别的语义。此外,X-Decoder 实现了不同粒度的工作之间的无缝交互,并通过学习一个通用且丰盛的像素级视觉语义了解空间而互惠互利。相干材料:代码地址:https://github.com/microsoft/...论文链接:https://arxiv.org/abs/2212.11270

January 9, 2023 · 1 min · jiezi

关于深度学习:KGTransE-及其实现

原文:https://yubincloud.github.io/notebook/pages/paper/kg/TransE/TransE 及其实现1. What is TransE?TransE (Translating Embedding), an <u>energy-based</u> model for learning low-dimensional embeddings of entities. 核心思想:将 relationship 视为一个在 embedding space 的 translation。如果 (h, l, t) 存在,那么 $h + l \approx t$。 Motivation:一是在 Knowledge Base 中,层次化的关系是十分常见的,translation 是一种很天然的用来示意它们的变换;二是近期一些从 text 中学习 word embedding 的钻研发现,一些不同类型的实体之间的 1-to-1 的 relationship 能够被 model 示意为在 embedding space 中的一种 translation。 2. Learning TransETransE 的训练算法如下: <center><img src="https://notebook-img-1304596351.cos.ap-beijing.myqcloud.com/img/image-20220917220547146.png" alt="image-20220917220547146" style="zoom:80%;" /></center> 2.1 输出参数training set $S$:用于训练的三元组的汇合,entity 的汇合为 $E$,rel. 的汇合为 $L$margin $\gamma$:损失函数中的距离,这个在原 paper 中形容很含糊每个 entity 或 rel. 的 embedding dim $k$2.2 训练过程初始化:对每一个 entity 和 rel. 的 embedding vector 用 xavier_uniform 散布来初始化,而后对它们施行 L1 or L2 正则化。 ...

January 7, 2023 · 4 min · jiezi

关于深度学习:ChatGPT的一小步NLP范式转变的一大步

作者:符尧,yao.fu@ed.ac.uk,爱丁堡大学 (University of Edinburgh) 博士生,本科毕业于北京大学;与Tushar Khot,彭昊在艾伦人工智能研究院 (Allen Institute for AI) 共同完成英文原稿;与李如寐(美团NLP核心)独特翻译为中文;感激 Aristo teammates, Jingfeng Yang, 和 Yi Tay 的探讨与倡议。请同时参考CoT[1]团队的博客。 在此前《ChatGPT进化的机密》一文中,本文作者分析了ChatGPT的技术路线图。而在ChatGPT公布前,作者具体介绍了大模型的突现能力、以及它在NLP/ML工作中的潜在劣势,以此来探讨大模型所带来的“潜在的”范式转变。显然,起初ChatGPT所展现出的弱小能力,将这种转变的步调扎实地推动了一大步。援用英文版原文:https://franxyao.github.io/bl... 最近,人们对大型语言模型所展现的弱小能力(例如思维链[2]、便签本[3])产生了极大的趣味,并发展了许多工作。咱们将之统称为大模型的突现能力[4],这些能力可能只存在于大型模型中,而不存在于较小的模型中,因而称为“突现”。其中许多能力都十分令人印象粗浅,比方简单推理、常识推理和散布外鲁棒性。 值得注意的是,这些能力很靠近 NLP 社区几十年来始终寻求的能力,因而代表了一种潜在的钻研范式转变,即从微调小模型到应用大模型进行上下文学习。对于先行者来说,范式转变可能是很显然的。然而,出于迷信的严谨性,咱们的确须要十分明确的理由来阐明为什么人们应该转向大型语言模型,即便这些模型低廉、难以使用,并且成果可能个别。 在本文中,咱们将认真钻研这些能力是什么,大型语言模型能够提供什么,以及它们在更宽泛的 NLP/ML 工作中的潜在劣势是什么。 前提:咱们假如读者具备以下常识: 预训练、精调、提醒(一般从业者应具备的自然语言解决/深度学习能力)思维链提醒、便签本(一般从业者可能不太理解,但不影响浏览) 1存在于大模型而非小模型的突现能力图片来自于 Wei. et. al. 2022. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models。X轴为模型尺寸。GSM8K是一个小学程度的数学问题集。 在以上的效果图中,咱们能够察看到模型的体现: 当尺寸绝对小的时候晋升并不大当模型变大时有很显著的晋升 这从根本上阐明,某些能力可能不存在于小模型中,而是在大模型中取得的。 有很多种突现能力,比方 Wei 等人在 2022年[5]所梳理的。有些能力很有意思,但咱们在本文不会探讨,比方last latter concatenation,咱们认为这是Python而不是语言模型要做的工作;或者3位数加法,咱们认为这是计算器而不是语言模型要做的事。 在本文中,咱们次要对以下能力感兴趣: NLP 社区近几年都关注但还没实现的能力之前的 NLP 模型很难达到的能力源自于人类语言最深层的实质的能力可能达到人类智力的最高程度的能力2突现能力的三个典型例子很多有意思的能力都能够归到上文提到的类别里,在它们之中,咱们次要探讨以下三种典型能力: 简单推理常识推理散布外鲁棒性 接下来让咱们一个个具体探讨。 简单推理 上面是一个GSM8K数据集中,用提醒词显著超过精调的例子: 尽管这道题对于10岁的孩子来说很容易,但对语言模型来说却很难,次要是因为数学和语言混合在一起。 GSM8K 最后由 OpenAI 于 2021 年 10 月[6]提出。过后他们用第一版GPT3在全副训练集上进行了精调,准确率约为 35%。这个后果让作者相当乐观,因为他们的结果显示了语言模型的缩放法则:随着模型大小呈指数增长,性能呈线性增长(我之后会探讨)。因而,他们在第 4.1 节中思考: ...

January 5, 2023 · 3 min · jiezi

关于深度学习:BerkleyCS285-深度强化学习Lecture-2

本课从 模拟学习 开始讲起。模拟学习是一种由 传统有监督学习 启发而来的用于管制实践的办法。 (基于价值的思路和传统的监督学习联合,便提出一系列基于生成 价值数据集 (Qtable)的办法,而基于 policy 的思路和 监督学习联合,就是 基于生成 action 数据集的办法,那就是模拟学习。) “Generally, it doesnt work.”: 模拟学习有很多问题 及相应的钻研黑线是训练轨迹: 人为给出的, 被模拟的红线: expected 指的是 数学冀望. 理论是 policy 模型 预测的最优线路指的是, 有监督学习的 模拟学习 肯定会有误差 次要起因是, 有监督学习要求, 测试集 和 训练集 的自变量须要来自同一个数据分布( $o_{t}$ 的散布雷同) ,但 policy 因为 本身的相对存在的误差 产生不同的 action, 导致不同的 observation 散布 ($p_{data}(o_t) \ne p_{\pi_{\theta}}(o_t)$)令 $p_{data}(o_t) = p_{\pi_{\theta}}(o_t)$ : DAgger: 人工对 policy obervation 标注 正确的 actionobservation 偏差的起因: - 人类的 Action 不是 蒙特卡洛的: 蒙特卡洛 假如 是同一个observation 不论几次 都会采取同样的行为 - 钻研一: - 用间断的一段 Ob 来对应 Action 绝对更正当 - "RNN + CNN 图像处理" 解决 不定长的图像序列 (history) - ![Pasted image 20221231113932](https://raw.githubusercontent.com/casual-lab/Images/master/2023/01/04-1672817267-57250f9b5ef81cc8b1fc6e5787fd467a-Pasted%20image%2020221231113932.png?token=ALYUVK4DKH5HQPVKJNQD4VTDWUVMC) - 钻研二: Causal Confusing: 模拟学习 察看 与 动作 之间的 因果关系 模型无奈精确把握 - 刹车指示灯亮, - ![Pasted image 20221231114425](https://raw.githubusercontent.com/casual-lab/Images/master/2023/01/04-1672817267-223ac4b2752740d4b42e416cf442f0b5-Pasted%20image%2020221231114425.png?token=ALYUVKYLVENFWJWSTNTFMHDDWUVMG) - Q1 我的思考: 能够, 因为蕴含了工夫序列关系能够示意因果关系, - Q2 我思: 能够, 通过人为的标注改正谬误归因 - Multimodal Behavior (多峰概率分布的行为) - Policy 的决策是取概率分布的冀望 (求均匀) - 当 action 是 间断散布(高斯分布), 如果两种 **相同但都正当的** action 互相对消, 则得出冀望为第三种不合理的 Action - 即, 实际上 action 的 散布应该是一个多峰的散布, 这样的散布很难训练. 罕用的间断散布: 高斯分布是单峰的 - ![Pasted image 20221231115501](https://raw.githubusercontent.com/casual-lab/Images/master/2023/01/04-1672817267-84e75762a256cd604f38a512334ebdb2-Pasted%20image%2020221231115501.png?token=ALYUVK43TDQFKU6MVGH2IRDDWUVMM) - 高斯输入混合: 预测出多个 高斯分布求均匀 - latent variable: 加一个特制的噪声, 不容易实现 - ![Pasted image 20221231115714](https://raw.githubusercontent.com/casual-lab/Images/master/2023/01/04-1672817267-3d8396254235a45b8db85851f1ef74b1-Pasted%20image%2020221231115714.png?token=ALYUVK4CQ27ZOV2RYFZB34LDWUVMO) - Autoregressive Discretization: - 由上, 离散 action 散布 不存在 单峰散布 对消的问题, 一种思路是吧连续变量离散化. - 如果把高维度动作离散化,每个动作维度的每个离散值别离训练一个概率网络, 计算量大不事实。 - Autoregressive discretization:它首先把动作的第1维离散为多个动作,比方3个,这些动作有个对应的softmax层来解决,当运行向前流传后,咱们只有从softmax进行采样就能失去最优动作; - 接着把第1个动作和之前的图像作为第2个softmax网络的输出,输入第2个最优动作;而后反复上述过程直到输入所有动作。 - 实质是共用了一部分网络如何实现 模拟学习一些实践:定义 处分函数 或者 代价函数 ...

January 4, 2023 · 2 min · jiezi

关于深度学习:如何看待PyTorch-20

作者|吴育昕 1为什么是TorchDynamoGraph capture 把用户 Python 写的模型代码变成 graph,是所有编译的根基。而 PyTorch 在试了这么多计划之后仿佛曾经锁定 TorchDynamo 作为 graph capture 的将来方向了,所以写一点对于 TorchDynamo 的内容,次要是解释到底为什么要做这个货色(来到FB一年了,内容次要凭本人的猜想和了解)。 一句话尽量解释 TorchDynamo 干了什么: 利用 PEP523(https://peps.python.org/pep-0...) 的 API 在用户执行每个 python frame 前, 拿到这个 frame 的 bytecode,把其中意识的局部用 tracing 的形式提取出 graph (并送给后端编译),不意识的局部维持原样。把批改后的 bytecode还给 CPython 跑。 因为 LazyTensor 和 TorchDynamo 都做 tracing,并且都是 best-effort graph capture,即只编译本人能 capture 的局部,capture 不到的用 Python 跑 (aka Python fallback),所以观感上两者可能会差不多。 然而,这两个计划的差异正是 TorchDynamo 要害的中央: LazyTensor 是个纯靠 tracing 的计划,不可避免的问题是 「只能看见 trace 到的局部,只有 trace 一下才晓得哪里不能 trace」 。而每次执行模型的时候,不能 trace 的局部可能不太一样。为了保障正确性,LazyTensor 就不得不每次执行都要从新 trace。举个极其的例子,模型里写了一个torch.add(tensor, random.random()) ,其中 random 是个 LazyTensor 看不见摸不着的 Python 函数,那只有从新 trace 能力保障正确性。 ...

January 3, 2023 · 2 min · jiezi

关于深度学习:TorchDynamo初探Python-ByteCode的动态修改

作者|strint 1背景深度学习框架编译优化时,须要先依据计算逻辑造成一个逻辑计算图,而后再改写计算图,最初执行改写后的计算图。其中生成逻辑计算图形式有两种。 一种计算图生成是基于 trace tensor 的,跟踪 tensor 的执行门路。tensor 执行时,基于函数重载,能够落到反对 tensor 计算的框架自定义函数,该函数个别是 c++ 层的。c++ 层的自定义函数中,性能是用于生成一个 Operation 的符号表白。比方一个对于加法运算,trace 就是记录一个符号化的加法算子。如此一连串的运算就被转换了符号化的计算图。 另外一种计算图生成是基于 AST(形象语法树) 解析的。在代码执行前,间接依据 Python 文本代码失去 Python AST,而后依据 AST 来翻译成计算图(也叫做中间代码 IR)。 Python(特指 CPython)解释器执行,第一阶段会先把 Python 源码解析成 AST,第二阶段依据 AST 生成和优化 ByteCode(字节码),第三阶段在虚拟机中执行 ByteCode。 基于 AST 解析的计算图生成,产生在这里的第一阶段;基于 trace tensor 的计算图生成,产生在第三阶段之后。 TorchDynamo 特地的中央在于其工作在第二阶段,动静批改 Python ByteCode,这样第三阶段执行的曾经是批改后的 ByteCode了。 2TorchDynamo 概述TorchDynamo 是 PyTorch 新试验的 JIT 编译接口,反对应用 Python 在运行时批改动静执行逻辑,批改的机会是 CPython 的 ByteCode 执行前。这个思维相似 DynamoRIO(https://dynamorio.org) 我的项目,DynamoRIO 能够动静的批改 x86 机器码。 CPython 的每次函数调用会生成一个 Frame(或者叫 Stack),Frame 中带有的代码局部就是 ByteCode。CPython 运行时反对基于现有的 Frame 去设置一个自定义的 Frame,而后前面执行的就是自定义的 Frame。 ...

January 3, 2023 · 9 min · jiezi

关于深度学习:常见的降维技术比较能否在不丢失信息的情况下降低数据维度

本文将比拟各种降维技术在机器学习工作中对表格数据的有效性。咱们将降维办法利用于数据集,并通过回归和分类剖析评估其有效性。咱们将降维办法利用于从与不同畛域相干的 UCI 中获取的各种数据集。总共抉择了 15 个数据集,其中 7 个将用于回归,8 个用于分类。 为了使本文易于浏览和了解,仅显示了一个数据集的预处理和剖析。试验从加载数据集开始。数据集被分成训练集和测试集,而后在均值为 0 且标准差为 1 的状况下进行标准化。 而后会将降维技术利用于训练数据,并应用雷同的参数对测试集进行变换以进行降维。对于回归,应用主成分剖析(PCA)和奇怪值合成(SVD)进行降维,另一方面对于分类,应用线性判别分析(LDA) 降维后就训练多个机器学习模型进行测试,并比拟了不同模型在通过不同降维办法取得的不同数据集上的性能。 数据处理让咱们通过加载第一个数据集开始这个过程, import pandas as pd ## for data manipulationdf = pd.read_excel(r'Regression\AirQualityUCI.xlsx')print(df.shape)df.head() 数据集蕴含15个列,其中一个是须要预测标签。在持续降维之前,日期和工夫列也会被删除。 X = df.drop(['CO(GT)', 'Date', 'Time'], axis=1)y = df['CO(GT)']X.shape, y.shape#Output: ((9357, 12), (9357,))为了训练,咱们须要将数据集划分为训练集和测试集,这样能够评估降维办法和在降维特色空间上训练的机器学习模型的有效性。模型将应用训练集进行训练,性能将应用测试集进行评估。 from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)X_train.shape, X_test.shape, y_train.shape, y_test.shape#Output: ((7485, 12), (1872, 12), (7485,), (1872,))在对数据集应用降维技术之前,能够对输出数据进行缩放,这样能够保障所有特色处于雷同的比例上。这对于线性模型来说是是至关重要的,因为某些降维办法能够依据数据是否标准化以及对特色的大小敏感而扭转其输入。 from sklearn.preprocessing import StandardScalerscaler = StandardScaler()X_train = scaler.fit_transform(X_train)X_test = scaler.transform(X_test)X_train.shape, X_test.shape主成分剖析(PCA)线性降维的PCA办法升高了数据的维数,同时保留了尽可能多的数据方差。 ...

January 3, 2023 · 2 min · jiezi

关于深度学习:一个深度学习框架的年度报告

December 30, 2022 · 0 min · jiezi