tag 标签: 课程

相关资源
  • 所需E币: 0
    时间: 2024-5-20 16:59
    大小: 2.18KB
    日常工作中,我们不可能避免得使用浏览器来完成一些工作,Python也有不少浏览器自动化的工具,我用过selenium、splinter、playwright,最终还是选择了微软的playwright,之所以选择它,是因为它可以自动安装浏览器,不需要手动下载浏览器的驱动程序,比如chromedriver,这样写出来的自动化工具很容易移植到其他系统中运行。Playwright可通过单个API自动执行Chromium,Firefox和WebKit浏览器,支持无头浏览器(headless),Linux、macOS、Windows下均可以使用,Playwright提供的自动化技术是绿色的,功能强大,稳定且速度快。你可以充分发挥空间,想象它可以实现什么样的功能。一、Playwright是什么?微软在2020年初开源的新一代自动化测试工具,它的功能类似于Selenium、Pyppeteer等,都可以驱动浏览器进行各种自动化操作。它的功能也非常强大,对市面上的主流浏览器都提供了支持,API功能简洁又强大。虽然诞生比较晚,但是现在发展得非常火热。Playwright支持大部分的语言,Node.js,Python,Java,.net,并且支持谷歌,火狐浏览器,WebKit,对于移动端也支持,可以在Windows、Linux、MacOs等机器上运行。脚本执行支持同步或者异步的方式。Playwright是一个开源的自动化测试工具,用于测试网页应用。它可以操控Chromium(用于Chrome、Edge等)、Firefox和WebKit(用于Safari)等主流浏览器,使我们能在不同浏览器中执行自动化测试。二、Playwright相对于Selenium的优势在介绍Playwright的安装与Python集成之前,让我们先了解一下Playwright相对于传统的自动化测试工具Selenium的优势所在。1.1跨浏览器支持Playwright支持多种主流浏览器,包括Chrome、Firefox和WebKit(用于Safari),而Selenium在一段时间内对新版本的浏览器支持可能会滞后。1.2更快的执行速度Playwright以其快速的执行速度著称,它能够在多个浏览器上同时执行测试,从而大大减少了测试的执行时间。相比之下,Selenium在执行速度方面可能会慢一些。1.3更稳定的选择器Playwright使用了更先进的选择器引擎,能够更稳定地识别页面上的元素,减少了因页面变化而导致的测试失败的可能性。而Selenium在这方面可能会更容易受到页面变化的影响。三、Playwright是跨语言支持的,支持Python、Java、Node.js、.NET使用场景:自动化测试工程师,可用于Web开发中的各种自动化测试;爬虫工程师,当接口中有加密参数(包括url加密参数、请求头加密参数、cookie加密参数)或者返回数据也是经过加密的,如果加密逻辑太过复杂暂时无法找出,我们可采用自动化的方式获取经过网站渲染过的源码,抓取需要的数据即可;开发工程师,可与其他项目结合来使用,比如docker、github/gitlab等四、为什么选择Playwright?Playwright的优势1、Selenium需要通过WebDriver操作浏览器;Playwright通过开发者工具与浏览器交互,安装简洁,不需要安装各种Driver。2、Playwright几乎支持所有语言,且不依赖于各种Driver,通过调用内置浏览器所以启动速度更快。3、Selenium基于HTTP协议(单向通讯),Playwright基于Websocket(双向通讯)可自动获取浏览器实际情况。4、Playwright为自动等待,而在Selenium中经常需要写sleep去作为一个等待,保证程序正常运行。等待元素出现(定位元素时,自动等待30s,等待时间可以自定义,单位毫秒)等待事件发生
  • 所需E币: 0
    时间: 2024-5-7 14:49
    大小: 2.62KB
    1、WPF基础叙述:WPF(WindowsPresentationFoundation)是微软推出的基于Windows的用户界面框架,属于.NETFramework3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。2、WPF布局原则①一个窗口中只能包含一个元素②不应显示设置元素尺寸③不应使用坐标设置元素的位置④可以嵌套布局容器3、WPF布局容器①StackPanel:水平或垂直排列元素、Orientation属性分别:Horizontal/Vertical②WrapPanel:水平或垂直排列元素、针对剩余空间不足会进行换行或换列进行排列③DockPanel:根据容器的边界、元素进行Dock.Top、Left、Right、Bottom设置④Grid:类似table表格、可灵活设置行列并放置控件元素、比较常用⑤UniformGrid:指定行和列的数量,均分有限的容器空间⑥Canvas:使用固定的坐标设置元素的位置、不具备锚定停靠等功能。4、学习WPF的基础知识:1)  WPF是微软提供的一种用来开发“桌面应用”的技术(框架),这项技术本身和C#没有关系,必须会的是xaml语法。2)  对XML、HTML、XHTML、ASP.NET之类的“标准通用标记语言”,对于学习是有所帮助的。3)  有WinForm或ASP.NET经验,主要是对控件事件的处理要有所了解。4)  具备面向对象的思想:在WPF中,经常要灵活运用各种继承关系、多态、重载等。5)  DataBinding要有所了解:Binding是WPF的一大亮点。5、C++/CLI下创建WPF项目的方法由于WPF不仅仅支持C#/VB开发,还支持其他语言,比如:C++、F#等开发,于是大白我最近花了点时间摸索了一下,本文主要介绍C++/CLI下创建WPF项目的方法。我使用的开发环境是:Win10x64+VisualStudio2019(16.6.1版本)。今天我们需要使用C++/CLI,算是C++的一个子集吧。要能正常使用C++/CLI,首先需要确保你安装了C++/CLIbuild套件(见下图),同时还需要确保你安装好了VisualC++相应版本的运行库。进入控制面板,找到VisualStudio2019,右击"修改",然后切换到"独立组件"(Individualcomponents)这个选项卡。如果没安装,勾选后安装一下即可。接下来我们可以创建项目了,建议选用模板CLREmptyProject(.NETFramework),解决方案和项目名可以都用CppWpfDemo。这时一个空项目就创建完成了。此时查看Project的属性,ConfigrationProperties->"C/C++"->"AllOptions",输入"common"进行搜索,确保选中的是CommonLanguageRuntimeSuppor(/clr).6、创建应用程序项目第一步是创建包含应用程序定义、两个页面以及图像的应用程序基础结构。使用VisualBasic或VisualC#创建名为ExpenseIt的新WPF应用程序项目:打开VisualStudio,然后在“开始”菜单下选择“创建新项目”。“创建新项目”对话框随即打开。在“语言”下拉列表中,选择“C#”或“VisualBasic”。然后选择“WPF应用(.NETFramework)”模板,然后选择“下一步”。“配置新项目”对话框随即打开。输入项目名称ExpenseIt,然后选择“创建”。VisualStudio将创建该项目,并打开名为MainWindow.xaml的默认应用程序窗口的设计器。打开Application.xaml(VisualBasic)或App.xaml(C#)。此XAML文件定义WPF应用程序以及任意应用程序资源。还可以使用此文件指定在应用程序启动时自动显示的UI(在本例中是MainWindow.xaml)。XAML在VisualBasic中应如下所示:<Applicationx:Class="Application"  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  StartupUri="MainWindow.xaml">  <Application.Resources>       </Application.Resources></Application>在C#中如下所示:<Applicationx:Class="ExpenseIt.App"   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   StartupUri="MainWindow.xaml">  <Application.Resources>       </Application.Resources></Application>打开MainWindow.xaml。此XAML文件是应用程序的主窗口,显示在页面中创建的内容。Window类定义窗口属性(例如标题、大小或图标),并处理事件(例如关闭或隐藏)。
  • 所需E币: 0
    时间: 2024-3-14 16:01
    大小: 3.03KB
    一、什么是系统架构设计师系统架构设计师,属于计算机技术与软件(高级)专业技术资格。考试合格人员能够根据系统需求规格说明书,结合应用领域和技术发展的实际情况,考虑有关约束条件,设计正确、合理的软件架构,确保系统架构具有良好的特性;能够对项目的系统架构进行描述、分析、设计与评估;能够按照相关标准编写相应的设计文档;能够与系统分析师、项目管理师相互协作、配合工作;具有高级工程师的实际工作能力和业务水平。二、系统架构的概述自1946年世界上第一台计算机诞生,对人类的计算工具产生了革命性变革。冯诺依曼提出了计算机由运算器,控制器,存储器,输入和输出设备五部分组成,计算机的内部采用二进制。计算机是全球信息化发展的核心载体,随着各种基础技术突飞猛进的发展,信息系统的规模越来越大、复杂程度越来越高、系统的结构显得越来越重要。如果在搭建系统时未能设计出优良的结构,势必对系统的可靠性、安全性、可移植性、可扩展性、可用性和可维护性等方面产生重大影响。因此,系统架构(SystemArchitecture)是系统的一种整体的高层次的结构表示,是系统的骨架和根基,也决定了系统的健壮性和生命周期的长短。系统架构设计师是承担系统架构设计的核心角色,他不仅是连接用户需求和系统进一步设计与实现的桥梁,也是系统开发早期阶段质量保证的关键角色。随着系统规模和复杂性的提升,系统架构设计师在整个项目研制中的主导地位愈加重要。可以说,系统架构师就是项目的总设计师,他是一个既需要掌控整体又需要洞悉局部瓶颈,并依据具体的业务场景给出解决方案的总体设计人员;他要确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员;他要掌握技术团队的能力需要,给出项目管理方法,采用合适生命周期模型,具备以自身为核心形成团队的能力,并在项目进度计划和经费分配等方面开展评估,以预防项目风险。三、系统架构设计师考试时间2024年开始系统架构设计师和系统分析师一年都有两次考试机会,分别在上半年和下半年。这样的考试时间安排,对于技术同学来说,是一个好消息。因为这样的时间安排,可以让你有更多的机会来备考,而不是像以前一样,一年只有一次考试机会,错过了就要等一年。2024年上半年系统架构设计师报名时间是3月18日,考试时间极大概率是5月25日。四、考试难度大吗不要被考试难度吓到,从难度上来说并不是一门难道很高的考试,但是每年的通过率可能只有15%左右。个人认为,究其原因因为架构作为一门分三科单独划线的考试(各科满分75,45分通过),很多应试者因为复习时间分配不当,导致某些科目复习不到位,从而单科线未过,满盘皆输,非常可惜。因此我从个人角度分享两个应试技巧。一个是以【真题为纲】【书本为辅】,二是【学会总结】。五、系统架构设计师常见的考试内容包括哪些系统架构设计师常见的考试内容包括:计算机网络和通信知识:涵盖网络协议、路由、交换、传输控制协议/因特网协议(TCP/IP)、网络安全等。数据库知识:包括关系型数据库管理系统(RDBMS)、:非关系型数据库、数据建模、数据仓库等。操作系统知识:涉及操作系统原理、进程管理、内存管理、文件系统等软件工程知识:包括软件开发过程、软件设计原则、软件测试、软件质量保证等架构设计知识:包括系统设计原则、架构设计模式、系统性能优化、系统安全等此外,考试内容可能还包括项目管理、商业分析、人工智能、云计算等方面的知识。根据考试的级别和范围,考试内容也会有所不同。六、关于系统架构设计师就业系统架构设计师的就业前景非常乐观。随着信息技术的发展,特别是云计算、大数据、人工智能等技术的普及,企业对信息系统的依赖程度日益加深,对系统架构设计师的需求也随之增加。无论是大型企业还是小型公司,无论是传统行业还是新兴领域,都需要专业的系统架构设计师来负责设计和管理其信息系统。此外,由于信息技术领域的快速发展,系统架构设计师需要不断学习和更新自己的知识体系,以跟上技术潮流,满足企业对于复杂系统架构设计的需求。系统架构设计师的职业发展路径也是多元化的。他们可以选择在专业技术路径上深造成为技术领袖或行业专家,也可以转向管理岗位,利用技术背景和架构设计经验带领团队完成项目,或者成为独立的咨询顾问,为多家企业提供系统架构设计和优化服务。随着中国企业走出去的步伐加快,具备国际化视野的系统架构设计师将更受欢迎,他们需要了解国内外最新的技术动态和行业标准,并能够与不同文化背景的团队成员有效沟通。
  • 所需E币: 0
    时间: 2024-3-15 13:57
    大小: 2.96KB
    信息系统项目管理师是属于计算机技术与软件专业技术资格(水平)考试(即软考)高级资格考试里面的一项考试。通过该考试的合格人员能够掌握信息系统项目管理的知识体系,具备管理大型、复杂信息系统项目和多项目的经验和能力;能根据需求组织制订可行的项目管理计划;能够组织项目实施,对项目的人员、资金、设备、进度和质量等进行管理,并能根据实际情况及时做出调整,系统地监督项目实施过程的绩效,保证项目在一定的约束条件下达到既定的项目目标;能分析和评估项目管理计划和成果。信息是指音讯、消息、信息系统传输和处理的对象,泛指人类社会传播的一切内容。信息是物质、能力及其属性的标示的集合,是确定性的增加,以物质介质为载体,传递和反映世界各种事务存在方式、运动状态等的表征;信息不是物质,不是能力,是一种普遍形式,表达物质运动规律。香农定理,信息是消除随机不确定的东西/因素,单位为bit信息的特征:客观、普遍、无限、动态、相对、依附、变换、传递、层次、系统、转化;信息的质量属性:精确性、完整性、可靠性、及时性、经济性、可验证性、安全性;信息系统是由相互联系、相互依赖、相互作用的事物或过程组成的具有整体功能和综合行为的统一体。信息系统项目管理师是属于软考高级科目中的一科,是具备高级工程师9的实际工作能力和业务水平,从事信息系统项目管理的高级管理人员、高级项目经理9等。报考人群:一般是适用于社会各界从事计算机应用技术9、软件、网络、信息系统和信息服务9等专业技术工作的人员。报考条件:信息系统项目管理师由于考试向社会开放,不设学历资历条件,都可以报考。而且知识和能力各个科目都及格才能合格,因此合格率并不高。软考有五大专业方向和三个等级,一共有27个资格认证,如果没有进行深入了解的情况下从这27个中选择一个可能会为难。一般情况下,我们进行选择的时候都会结合自己所学的专业方向、所在的工作岗位发展方向去选择,但是我给大家的建议是最好选择偏向管理的岗位,如信息系统项目管理师(高项),因为它有技术需求性不高、管理属性等,适合学生考更适合在工作中遇到瓶颈的人群。考试内容考试内容大致包括信息系统开发基础、信息化与集成技术、系统安全管理、信息系统服务管理、相关法律法规、项目管理基础、管理科学等;别看需要掌握这么多方向,其实仅项目管理就占了大部分,考过PMP认证的同志们学高项就非常有优势,简单学习一下其他方位的理论知识,学学论文写作方式就能参加考试,问题不大。软考的信息系统项目管理师好考吗?说实话信息系统项目管理师考试是一项相对较难的考试,因为它是属于软考高级资格,一看到高级就知道考试难度不小。在2019年重庆市计算机技术与软件专业技术资格(考试)报名网曾发布过2018年和2019年的考试通过率数据,通过对比计算考试通过率在17%左右。但是,不要过于担心,下面我为大家总结一下不好考的三个难点在哪,希望在大家备考的时候有所帮助。难点1:涉及的知识领域较于广泛这是因为信息系统项目管理师的考试是要求考生全面项目管理的基础理论知识和项目实践的能力,考试的内容是包含整个项目从头到尾所有的知识。所以就要求考生需要对整个项目管理过程中的流程有全面的了解和理解难点2:对考生的综合能力要求较高1)要全面掌握项目管理知识信息系统项目管理师需要掌握全面的项目管理知识,包括项目生命周期、项目范围管理、时间管理、成本管理、风险管理等方面的知识。因为这些理论知识为项目管理活动提供了基础动力,并能指导实际项目的管理和执行。2)具备与项目干系人沟通与协调的能力信息系统项目管理师需要与项目团队、客户以及其他相关利益相关者进行有效的沟通与协调。不但需要清晰地传达客户的项目目标、需求和计划,而且要能够倾听和理解各方的需求与反馈,协调解决问题并保持良好的合作关系。3)需要具备领导与团队管理能力一个成功的信息系统项目管理师应具备领导能力,能够激发团队成员的积极性和工作动力,指导和引导团队成员完成各项任务,并有效地管理团队资源和冲突。在项目管理过程中,对产生的冲突进行有效的分析,找到合适的解决方案,并迅速采取行动。4)对项目风险的管理能力信息系统项目管理师需要具备有效的风险管理能力,能够识别潜在的风险,并制定相应的风险应对策略。他们需要评估和监控项目风险,并及时做出调整,确保项目能够按时、按质量要求完成。作为信息系统项目管理师,对相关的技术与工具的了解和熟悉是必要的。需要能够在项目管理活动过程中合理地应用相关技术或工具来支持和管理项目工作。5)项目进度管理与优先级排序能力信息系统项目管理师需要拥有良好的时间管理与优先级排序能力,能够根据项目的紧急程度和重要性,合理安排工作时间,并保证项目进度的按时完成。
  • 所需E币: 0
    时间: 2023-11-27 11:13
    大小: 5.15KB
    上传者: 开心就很好了
    自动驾驶是高安全型应用,需要高性能和高可靠的深度学习模型,VisionTransformer是理想的选摔。现在主流的自动驾驶感知算法基本都使用了VisionTransformer相关技术,比如分割、2D/3D检测,以及最近大火的大模型(如SAM),VisionTransformer在自动驾驶领域的落地方面遍地开花。5一方面,在自动驾驶或图像处理相关算法岗位的面试题中,VisionTransformer是必考题,需要对其理论知识有深入理解,并且在项目中真实的使用过相关技术。Transformer出自于Google于2017年发表的论文《Attentionisallyouneed》,最开始是用于机器翻译,并且取得了非常好的效果。但是自提出以来,Transformer不仅仅在NLP领域大放异彩,并且在CV、RS等领域也取得了非常不错的表现。尤其是2020年,绝对称得上是Transformer的元年,比如在CV领域,基于Transformer的模型横扫各大榜单,完爆基于CNN的模型。为什么Transformer模型表现如此优异?它的原理是什么?它成功的关键又包含哪些?本文将简要地回答一下这些问题。我们知道Transformer模型最初是用于机器翻译的,机器翻译应用的输入是某种语言的一个句子,输出是另外一种语言的句子。vari*int=nilfmt.Println("i.size:",unsafe.Sizeof(i))//8vari8*int8=nilfmt.Println("i8.size:",unsafe.Sizeof(i8))//8vars*string=nilfmt.Println("s.size:",unsafe.Sizeof(s))//8varps*struct{}=nilfmt.Println("ps.size:",unsafe.Sizeof(ps))//8varsi[]int=nilvarsi1[]int=nilfmt.Println("si.size:",unsafe.Sizeof(si))//24variiinterface{}=nilfmt.Println("ii.size:",unsafe.Sizeof(ii))//16我们以生成我,爱,机器,学习,翻译成<bos>,i,love,machine,learning,<eos>这个例子做生成过程来解释。训练:把“我/爱/机器/学习”embedding后输入到encoder里去,最后一层的encoder最终输出的outputs[10,512](假设我们采用的embedding长度为512,而且batchsize=1),此outputs乘以新的参数矩阵,可以作为decoder里每一层用到的K和V;将<bos>作为decoder的初始输入,将decoder的最大概率输出词向量A1和‘i’做crossentropy(交叉熵)计算error。将<bos>,“i”作为decoder的输入,将decoder的最大概率输出词A2和‘love’做crossentropy计算error。将<bos>,“i”,“love”作为decoder的输入,将decoder的最大概率输出词A3和’machine’做crossentropy计算error。将<bos>,“i”,"love",“machine”作为decoder的输入,将decoder最大概率输出词A4和‘learning’做crossentropy计算error。将<bos>,“i”,"love",“machine”,“learning”作为decoder的输入,将decoder最大概率输出词A5和终止符做crossentropy计算error。那么并行的时候是怎么做的呢,我们会有一个mask矩阵在这叫seqmask,因为他起到的作用是在decoder编码我们的targetseq的时候对每一个词的生成遮盖它之后的词的信息。funcmain(){s:=[]string{"a","b","c"}fmt.Println("s:origin",s)changes1(s)fmt.Println("s:f1",s)changes2(s)fmt.Println("s:f2",s)changes3(s)fmt.Println("s:f3",s)}funcchanges1(s[]string){vartmp=[]string{"x","y","z"}s=tmp}funcchanges2(s[]string){//item只是一个副本,不能改变s中元素的值fori,item:=ranges{item="d"fmt.Printf("item=%s;s[%d]=%s",item,i,s[i])}}funcchanges3(s[]string){fori:=ranges{s[i]="d"}}首先我们需要为每个输入向量(也就是词向量)创建3个向量,分别叫做Query、Key、Value。那么如何创建呢?我们可以对输入词向量分别乘上3个矩阵来得到Q、K、V向量,这3个矩阵的参数在训练的过程是可以训练的。注意Q、K、V向量的维度是一样的,但是它们的维度可以比输入词向量小一点,比如设置成64,其实这步也不是必要的,这样设置主要是为了与后面的Mulit-head注意力机制保持一致(当使用8头注意力时,单头所处理的词向量维度为512/8=64,此时Q、K、V向量与输入词向量就一致了)。我们假设输入序列为英文的"ThinkingMachines"想要深度理解Attention机制,就需要了解一下它产生的背景、在哪类问题下产生,以及最初是为了解决什么问题而产生。首先回顾一下机器翻译领域的模型演进历史:机器翻译是从RNN开始跨入神经网络机器翻译时代的,几个比较重要的阶段分别是:SimpleRNN,ContextualizeRNN,ContextualizedRNNwithattention,Transformer(2017),下面来一一介绍。「SimpleRNN」:这个encoder-decoder模型结构中,encoder将整个源端序列(不论长度)压缩成一个向量(encoderoutput),源端信息和decoder之间唯一的联系只是:encoderoutput会作为decoder的initialstates的输入。这样带来一个显而易见的问题就是,随着decoder长度的增加,encoderoutput的信息会衰减。funcmain(){varc=make(chanint)fmt.Printf("c.pointer=%p\n",c)//c.pointer=0xc000022180gofunc(){c<-1addChannel(c)close(c)}()foritem:=rangec{//item:1//item:2fmt.Println("item:",item)}}funcaddChannel(donechanint){done<-2fmt.Printf("done.pointer=%p\n",done)//done.pointer=0xc000022180}在测试模型的时候,Test:decoder没有label,采用自回归一个词一个词的输出,要翻译的中文正常从encoder并行输入(和训练的时候一样)得到每个单词的embedding,然后decoder第一次先输入bos再此表中的id,得到翻译的第一个单词,然后自回归,如此循环直到预测达到eos停止标记typevisitstruct{a1 unsafe.Pointera2 unsafe.PointertypType}funcdeepValueEqual(v1,v2Value,visitedmap[visit]bool)bool{if!v1.IsValid()||!v2.IsValid(){returnv1.IsValid()==v2.IsValid()}ifv1.Type()!=v2.Type(){returnfalse}//Wewanttoavoidputtingmoreinthevisitedmapthanweneedto.//Foranypossiblereferencecyclethatmightbeencountered,//hard(v1,v2)needstoreturntrueforatleastoneofthetypesinthecycle,//andit'ssafeandvalidtogetValue'sinternalpointer.hard:=func(v1,v2Value)bool{switchv1.Kind(){casePointer:ifv1.typ.ptrdata==0{//not-in-heappointerscan'tbecyclic.//Atleast,allofourcurrentusesofruntime/internal/sys.NotInHeap//havethatproperty.Theruntimeonesaren'tcyclic(andwedon'tuse//DeepEqualonthemanyway),andthecgo-generatedonesare//allemptystructs.returnfalse}fallthroughcaseMap,Slice,Interface://Nilpointerscannotbecyclic.Avoidputtingtheminthevisitedmap.return!v1.IsNil()&&!v2.IsNil()}returnfalse}ifhard(v1,v2){//ForaPointerorMapvalue,weneedtocheckflagIndir,//whichwedobycallingthepointermethod.//ForSliceorInterface,flagIndirisalwaysset,//andusingv.ptrsuffices.ptrval:=func(vValue)unsafe.Pointer{switchv.Kind(){casePointer,Map:returnv.pointer()default:returnv.ptr}}addr1:=ptrval(v1)addr2:=ptrval(v2)ifuintptr(addr1)>uintptr(addr2){//Canonicalizeordertoreducenumberofentriesinvisited.//Assumesnon-movinggarbagecollector.addr1,addr2=addr2,addr1}//Shortcircuitifreferencesarealreadyseen.typ:=v1.Type()v:=visit{addr1,addr2,typ}ifvisited[v]{returntrue}//Rememberforlater.visited[v]=true}switchv1.Kind(){caseArray:fori:=0;i<v1.Len();i++{if!deepValueEqual(v1.Index(i),v2.Index(i),visited){returnfalse}}returntruecaseSlice:ifv1.IsNil()!=v2.IsNil(){returnfalse}ifv1.Len()!=v2.Len(){returnfalse}ifv1.UnsafePointer()==v2.UnsafePointer(){returntrue}//Specialcasefor[]byte,whichiscommon.ifv1.Type().Elem().Kind()==Uint8{returnbytealg.Equal(v1.Bytes(),v2.Bytes())}fori:=0;i<v1.Len();i++{if!deepValueEqual(v1.Index(i),v2.Index(i),visited){returnfalse}}returntruecaseInterface:ifv1.IsNil()||v2.IsNil(){returnv1.IsNil()==v2.IsNil()}returndeepValueEqual(v1.Elem(),v2.Elem(),visited)casePointer:ifv1.UnsafePointer()==v2.UnsafePointer(){returntrue}returndeepValueEqual(v1.Elem(),v2.Elem(),visited)caseStruct:fori,n:=0,v1.NumField();i<n;i++{if!deepValueEqual(v1.Field(i),v2.Field(i),visited){returnfalse}}returntruecaseMap:ifv1.IsNil()!=v2.IsNil(){returnfalse}ifv1.Len()!=v2.Len(){returnfalse}ifv1.UnsafePointer()==v2.UnsafePointer(){returntrue}for_,k:=rangev1.MapKeys(){val1:=v1.MapIndex(k)val2:=v2.MapIndex(k)if!val1.IsValid()||!val2.IsValid()||!deepValueEqual(val1,val2,visited){returnfalse}}returntruecaseFunc:ifv1.IsNil()&&v2.IsNil(){returntrue}//Can'tdobetterthanthis:returnfalsecaseInt,Int8,Int16,Int32,Int64:returnv1.Int()==v2.Int()caseUint,Uint8,Uint16,Uint32,Uint64,Uintptr:returnv1.Uint()==v2.Uint()caseString:returnv1.String()==v2.String()caseBool:returnv1.Bool()==v2.Bool()caseFloat32,Float64:returnv1.Float()==v2.Float()caseComplex64,Complex128:returnv1.Complex()==v2.Complex()default://NormalequalitysufficesreturnvalueInterface(v1,false)==valueInterface(v2,false)}}这便是encoder的整体计算流程图了,Transformer模型中堆叠了多个这样的encoder,无非就是输出连接输入罢了,常规操作。最后再附上一个Transformer的代码实现,读者有兴趣可以跟着自己复现一下Transformer模型的代码。  packagemain  import(    "log"    "sync"  )  funcinit(){    log.SetFlags(log.Lshortfile)  }  funcmain(){    lock:=sync.Mutex{}    //Go1.18新增,是一种非阻塞模式的取锁操作。当调用TryLock()时,    //该函数仅简单地返回true或者false,代表是否加锁成功    //在某些情况下,如果我们希望在获取锁失败时,并不想停止执行,    //而是可以进入其他的逻辑就可以使用TryLock()    log.Println("TryLock:",lock.TryLock())    //已经通过TryLock()加锁,不能再次加锁    lock.Lock()  }
  • 所需E币: 0
    时间: 2023-11-27 14:02
    大小: 4.52KB
    众所周知,视觉系统对于理解和推理视觉场景的组成特性至关重要。这个领域的挑战在于对象之间的复杂关系、位置、歧义、以及现实环境中的变化等。作为人类,我们可以很轻松地借助各种模态,包括但不仅限于视觉、语言、声音等来理解和感知这个世界。现如今,随着Transformer等关键技术的提出,以往看似独立的各个方向也逐渐紧密地联结到一起,组成了“多模态”的概念。多功能通过引入灵活的提示引擎,包括点、框、涂鸦(scribbles)、掩模、文本和另一幅图像的相关区域,实现多功能性;可组合通过学习联合视觉-语义空间,为视觉和文本提示组合实时查询,实现组合性,如图1所示;可交互通过结合可学习的记忆提示进行交互,实现通过掩模引导的交叉注意力保留对话历史信息;语义感知通过使用文本编码器对文本查询和掩模标签进行编码,实现面向开放词汇分割的语义感知。超大规模视觉通用感知模型由超大规模图像、文本主干网络以及多任务兼容解码网络组成,它基于海量的图像和文本数据构成的大规模数据集进行预训练,用于处理多个不同的图像、图像-文本任务。此外,借助知识迁移技术能够实现业务侧小模型部署。超大规模视觉通用感知模型面临的挑战:(1)网络参数量庞大,通常超十亿参数,训练稳定性、收敛性、过拟合等问题相较于小网络挑战大很多。(2)原始数据集包含数十亿异质低质量图片与海量文本,多步训练以利用异质的多模态多任务数据,流程复杂,存在灾难性遗忘,难以定位精度等问题。(3)实验成本高,通常需要上千块GPU并行训练数周,需要研究者有敏锐的分析能力和扎实的知识基础。(4)工程挑战多,海量数据的吞吐,大型GPU集群上的并行算法,超大参数量模型的内存管理。提示工程大多数视觉数据集由图像和相应文本标签组成,为了利用视觉语言模型处理视觉数据集,一些工作已经利用了基于模版的提示工程,text_descriptions=[f"Thisisaphotoofa{label}"forlabelincifar100.classes]  text_tokens=clip.tokenize(text_descriptions).cuda()除了此类大型视觉语言基础模型外,一些研究工作也致力于开发可以通过视觉输入提示的大型基础模型。例如,最近META推出的SAM能够执行与类别无关的分割,给定图像和视觉提示(如框、点或蒙版),指定要在图像中分割的内容。这样的模型可以轻松适应特定的下游任务,如医学图像分割、视频对象分割、机器人技术和遥感等从模型训练、模型分发、模型商业化,美图体系化地同创作者和开发者共建模型生态:(1)模型训练:提供二次训练能力,并持续不断地为创作者提供服务,包括培训、社区和模型创作大赛。(2)模型分发:创作者和开发者共建的模型可以在美图的产品内进行分发,在分发过程中持续优化模型。(3)模型商业化:行业客户可通过MiracleVision的API和SDK进行商业使用,创作者和开发者通过商业合作获得经济收益。通用视觉-语言学习的基础模型UNITER:结合了生成(例如掩码语言建模和掩码区域建模)和对比(例如图像文本匹配和单词区域对齐)目标的方法,适用于异构的视觉-语言任务。Pixel2Seqv2:将四个核心视觉任务统一为像素到序列的接口,使用编码器-解码器架构进行训练。Vision-Language:使用像BART或T5等预训练的编码器-解码器语言模型来学习不同的计算机视觉任务。模型整体结构上,抛弃了CNN,将BERT原版的Transformer开箱即用地迁移到分类任务上面,在使用大规模训练集的进行训练时,取得了极好的效果。同时,在大规模数据集上预训练好的模型,在迁移到中等数据集或小数据集的分类任务上以后,也能取得比CNN更优的性能。模型整体结构如下图所示,完全使用原始BERT的Transformer结构,主要是对图片转换成类似token的处理,原文引入了一个patch的概念,首先把图像划分为一个个的patch,然后将patch映射成一个embedding,即图中的linearprojection层,将输入转换为类似BERT的输入结构,然后加上positionembedding,这里的position是1D的,最后加上一个learnableclassificationtoken放在序列的前面,classification由MLP完成。这里我们用RAM提取了图像的语义标签,再通过将标签输入到Grounding-DINO中进行开放世界检测,最后再通过将检测作为SAM的提示分割一切。目前视觉基础大模型可以粗略的归为三类:textuallypromptedmodels,e.g.,contrastive,generative,hybrid,andconversational;visuallypromptedmodels,e.g.,SAM,SegGPT;heterogeneousmodalities-basedmodels,e.g.,ImageBind,Valley.CoCa通过将所有标签简单地视为文本,对web-scalealt-text和annotatedimages进行了从头开始端到端的预训练,无缝地统一了表示学习的自然语言监督。因此,CoCa在广泛的下游任务上实现了最先进的性能,零样本传输或最小的任务特定适应,跨越视觉识别(ImageNet,Kinetics-400/600/700,Moments-in-Time)、跨模式检索(MSCOCO、Flickr30K、MSR-VTT)、多模式理解(VQA、SNLI-VE、NLVR2)和图像字幕(MSCOCO、NoCaps)。在ImageNet分类中,CoCa获得了86.3%的zero-shottop-1准确率,frozenencoderandfinetuneclassifier是90.6%,finetuneencoder可以到91.0%。截止目前国内外已经发布了许多包括NLP,CV和多模态在内的大规模模型,但是这些模型在应用落地上还是有待进一步探究的,目前应用落地较好的有华为的盘古,在电网和金融圈都有应用;智源的悟道系列在诗词图文上都有广泛应用,可以帮助学生看图写作,根据文字生成插图等;百度的文心也发布了在金融方面的应用。但截止目前为止大模型在实际中的应用还不是很理想,大模型发展的初衷是使用一个预训练好的大模型代替一堆小作坊似的根据不同任务训练的小模型,通过模型蒸馏知识迁移等技术在小模型上使用少量数据集达到超过原来小模型性能的目标。CV大模型在应用上的一个难点是与实际应用相结合,目前社会中用的较多的视觉相关的深度学习模型主要包括物体检测,人脸识别以及缺陷检测(部分)相比NLP模型在实际中的使用少很多,因此将CV模型与实际生产相结合发现更多的应用场景很关键。另外一个CV大模型应用的难点就是如何快速高效的使用蒸馏和知识迁移技术提升下游任务的性能,这两点难题的解决在CV大模型的实际应用中都刻不容缓。总结起来,将大模型应用于更高分辨率的下游视觉任务具有以下好处:提高感知能力、改善定位精度、提升语义理解、改善细节保留和边缘清晰度、增加鲁棒性和泛化能力,以及推动研究进展。这些好处使得大模型在处理高分辨率图像时能够获得更准确、更细致和更真实的结果。随着深度学习和计算资源的不断发展,我们可以期待更先进的大模型和相关技术的出现,进一步推动计算机视觉在高分辨率图像任务中的应用和突破
  • 所需E币: 0
    时间: 2023-10-18 10:44
    大小: 1.86KB
    上传者: 开心就很好了
    [38章]Three.js可视化系统课程WebGL(23年10月最新版+700多课时),视频+源码+课件,全网最全系列!WebGL是一个JavaScriptAPI,用于在任何兼容的Web浏览器中呈现交互式3D图形,而无需使用插件。WebGL应用程序由用JavaScript编写的控制代码和在计算机GPU上执行的特殊效果代码组成。WebGL元素可以与其他HTML元素混合,并与页面或页面背景的其他部分组合。WebGL浏览器报告检查Web浏览器中的WebGL支持,生成WebGL设备指纹识别,并显示其他WebGL和GPU功能或多或少相关的Web浏览器标识。WebGL在使用图片上有着比Canvas2D更强的限制,就是说WebGL不能随意使用网络获图像,还有一点需要注意的是WebGL读取本地数据的速度很快。WebGL1可以看成是OpenGLES2的javascript移植,类似的,WebGL2可以看做是OpenGLES3的javascript移植。所以大部分的特性可以去对应到OpenGLES3中的特性,当然有些细节上会有出入(比如textureswizzle是不支持)。这些新特性除了可以从WebGL2spec中找到,也可以去寻找OpenGLES3的书籍来大略了解。当然我非常推荐到我们的WebGL2SamplesPack去直接寻找新的特性及其用法,一般每个特性都有对应的sample。比较重要的特性有:uniformbufferobjectvertexarrayobjecttransformfeedbackmultisamplefbomultiplerendertargets一系列texture相关:texturelod,texture2darray,texture3d,压缩格式texture等等。WebGL是什么GPU≠WebGL≠2DWebGL是浏览器上的OpenGL需要一定计算机图形学基础和线性代数基础WebGL(全写WebGraphicsLibrary)是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGLES2.0结合在一起,通过增加OpenGLES2.0的一个JavaScript绑定,WebGL可以为HTML5Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。显然,WebGL技术标准免去了开发网页专用渲染插件的麻烦,可被用于创建具有复杂3D结构的网站页面,甚至可以用来设计3D网页游戏等等。和传统的3D方案相比,WebGL具有如下一些优点。WebGL是内嵌在浏览器中的,无需安装插件和库就可以直接使用。可以在多平台上运行WebGL程序。让海量数据的二维可视化成为了可能。开发环境简单,仅需文本编辑器和浏览器就可以编写三维图形程序
  • 所需E币: 0
    时间: 2023-9-20 16:11
    大小: 1.29KB
    上传者: 蝴蝶结欧恩
    给大家分享一套课程——Vue+DjangoRESTframework打造生鲜电商项目,附源码下载。Django项目源自一个在线新闻Web站点,于2005年以开源的形式被释放出来。Django框架的核心组件有:用于创建模型的对象关系映射;为最终用户设计较好的管理界面;URL设计;设计者友好的模板语言;缓存系统。Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYourself)原则。微商等社交电商社交电商将成为未来零售的重要通道,社交电商所带来的巨大流量也将转变为电商的销量,人们在获取信息的同时还可以更好的享受购物带来的乐趣,社交电商将成为未来电商发展的新方向。网站开发,网页设计,网络营,微商,开淘宝或者京东网店,还有就是做代购,这些都是电子商务方面的创业项目。随着国内互联网使用人数的增加,利用互联网进行网络购物并以银行卡付款的消费方式已渐趋流行,市场份额也在迅速增长,各种类型的电商网站也将层出不穷。注:找项目,找渠道,找异业合作建议上BD邦平台看看,有很多甲方项目能给予启发,还有行业社群
  • 所需E币: 0
    时间: 2023-8-9 15:34
    大小: 936B
    上传者: 蝴蝶结欧恩
    本课程除了使初学者快速人门blender外,有系统的互联网可视化案例,科技风格数字李生项目的美术教程,以及动画教程,让你躺赢职场,秒变大神。Blender是一款免费开源三维图形图像软件,提供从建模、动画、材质、渲染、到音频处理、视频剪辑等一系列动画短片制作解决方案。Blender拥有方便在不同工作下使用的多种用户界面,内置绿屏抠像、摄像机反向跟踪、遮罩处理、后期结点合成等高级影视解决方案。Blender内置有Cycles渲染器与实时渲染引擎EEVEE[1]。同时还支持多种第三方渲染器。“3D建模”通俗来讲就是利用三维制作软件通过虚拟三维空间构建出具有三维数据的模型。3D建模大概可分两类为:NURBS和多边形网格。
  • 所需E币: 0
    时间: 2023-8-2 14:19
    大小: 1.34KB
    上传者: 开心就很好了
    《Python多领域场景实战课快速成为多面手》理论+实战相结合,融合5大领域(如办公自动化、数据分析、爬虫、人工智能、Web开发)1、python办公自动化Python可以用于实现自动化办公Q,以下是一些常见的应用场景和实现方法1.自动化数据处理2.自动化文档3.自动化邮件发送4.自动化网页操作5.自动化任务调度2、python数据分析数据分析是通过明确分析目的,梳理并确定分析逻辑,针对性的收集、整理数据,并采用统计、挖掘技术分析,提取有用信息和展示结论的过程,是数据科学领域的核心技能。3、python爬虫爬虫流程:①urllib的request打开url带到网页的html文档②浏览器打开网页源代码分析元素节点③通过BeautifulSoup或者正则表达式提取想要的数据④存储数据到本地磁盘或者数据库,进行数据分析4、python人工智能人工智能(AI)已成为当今世界的热门话题,它的应用范围越来越广泛。其中,Python成为AI开发中最受欢迎的编程语言之一。Python提供了许多功能强大的库和框架,大大简化了开发人员的工作。5、pythonWeb开发使用Python进行Web开发的步骤可以分为以下几个部分:①选择Web框架:Web框架是用于简化Web开发的工具,Python有很多优秀的Web框架可以选择,如Django、Flask、Tornado等。②安装Web框架:选择适合自己的Web框架后,需要安装对应的框架包。可以使用类似pip的包管理器进行安装。③创建Web应用程序:创建自己的Web应用程序,可以在Web框架中创建一个基本Web应用程序。④定义路由:定义应用程序中的每个URL及其操作。通常这些操作被定义为函数
  • 所需E币: 0
    时间: 2023-7-29 09:51
    大小: 1.48KB
    当今社会是科技的社会,是算力快速发展的时代。随着数据中心、东数西算、高性能计算、数据分析、数据挖掘的快速发展,大模型得到了快速地发展。大模型是“大算力+强算法”相结合的产物,是人工智能的发展趋势和未来。目前,大规模的生态已初具规模。其可以实现从“手工作坊”到“工厂模式”的AI转型。大模型通常在大规模无标记数据上进行训练,以学习某种特征和规则。基于大模型开发应用时,可以对大模型进行微调,或者不进行微调,就可以完成多个应用场景的任务;更重要的是,大模型具有自监督学习能力,不需要或很少需要人工标注数据进行训练,降低训练成本,从而可以加快AI产业化进程,降低AI应用门槛。NLP大模型是被认为最接近人类中文理解能力的AI大模型,而CV大模型首次兼顾了图像判别与生成能力。未来的方向1.进一步扩大模型规模,改善模型架构和训练改善模型的架构或者训练过程可能会带来具有涌现能力的高质量模型,并减少计算量。一种方向是使用稀疏混合专家架构,其在保持恒定输入成本时具有更好的计算效率,使用更加局部的学习策略,而不是在神经网络的所有权重上进行反向传播,以及使用外部存储来增强模型。2.扩大数据规模在一个足够大的数据集上训练足够长的时间被证明是语言模型获得语法、语义和其他世界知识的关键。近期,Hoffmannetal.认为先前的工作低估了训练一个最优模型的训练数据量,低估了训练数据的重要性。收集模型可以在其上训练更长时间的大量数据,允许在一个固定模型尺寸的约束下有更大范围的涌现能力。3.更好的prompt虽然few-shotprompting简单有效,对prompting通用性的改善将进一步扩展语言模型的能力。
  • 所需E币: 0
    时间: 2023-7-28 16:15
    大小: 1.21KB
    上传者: 蝴蝶结欧恩
    分享一套课程——Python多领域场景实战课快速成为多面手,课程包更新,提供源码+PDF课件。本课程理论+实战相结合,融合5大领域(如办公自动化、数据分析、爬虫、人工智能、Web开发),12个梯度渐近的项目训练,融入学习的坑和开发经验,培养良好的开发编程思维,让你从0到1快速入门与多领域实战,逐步提升能力,成为python多面手,提高工作效率和职业竞争力。课程收获:1.从0到1快速成为Python多面手2.提升5大领域视野&实践能力3.大幅提升12大场景工作效能4.获得丰富的案例开发经验5.培养多领域编程思维与规范6.获得更多职业竞争力和选择权
  • 所需E币: 1
    时间: 2023-7-14 17:12
    大小: 231.03KB
    上传者: 张红川
    (SVIP课程学员必看)福大SVIP课程学员电路复习规划-刺猬哥考研团队(1)(2).pdf
  • 所需E币: 1
    时间: 2023-7-13 15:27
    大小: 2.77MB
    上传者: 张红川
    华中科技大学电路理论课程教案(绝对经典——不看后悔).zip
  • 所需E币: 1
    时间: 2023-7-12 09:12
    大小: 951.99KB
    上传者: 张红川
    明德扬点拨FPGA课程学习指导.pdf
  • 所需E币: 0
    时间: 2023-7-11 15:19
    大小: 861B
    上传者: 蝴蝶结欧恩
    分享一套大数据课程——大数据工程师2023版,33周全,源码+课件+电子书+软件+包升级。全面构建五大能力体系,轻松应对多种岗位需求项目驱动式学习,知其然更知其所以然一、大数据基础· Linux系统使用· Shell脚本开发· Hadoop集群搭建二、离线数据采集计算· 海量数据采集· 海量数据计算· OLAP数据分析· 函数式编程· 内存数据高效计算· 从0~1构建数仓三、实时数据采集计算· 实时数据缓存能力· 内存数据存储能力· NOSQL数据存储能力· 新一代实时数据计算能力· 流式SQL计算能力四、全文检索引擎· 海量数据检索能力· 多条件组合查询能力· 中文词库热更新能力· 检索引擎SQL查询能力五、数据中台· 数据中台架构设计能力· 数据加工总线架构设计  能力· 基于SparkSQL的通用  引擎封装能力· 基于FlinkSQL的通用  引擎封装能力实战:电商数据仓库实战:直播平台关系三度推荐V1.0+V2.0实战:开发仿百度搜索引擎实战:数据中台大屏
  • 所需E币: 0
    时间: 2023-6-27 15:46
    大小: 665B
    上传者: 蝴蝶结欧恩
    分享课程——OpenVINO2022计算机视觉模型部署与加速课程,附源码+模型文件+思维导图。课程目录:章节1课程概述章节2部署ResNet图像分类模型章节3车辆检测与中文车牌识别章节4行人检测人脸检测表情识别与关键点检测章节5语义与实例分割模型部署与加速推理章节6OCR应用-场景文字检测与识别章节7自定义模型部署与转换章节8YOLOv5部署与加速章节9Python版本SDK介绍与推理演示章节10课程总结源码+模型文件+思维导图
  • 所需E币: 1
    时间: 2023-6-16 13:47
    大小: 2.82MB
    上传者: 张红川
    小功率开关电源中的DC-DC功率级拓扑、分析与设计课程讲稿.pdf
  • 所需E币: 0
    时间: 2023-6-15 17:47
    大小: 862B
    上传者: 蝴蝶结欧恩
    分享课程——Python数据分析与机器学习实战,提供代码+数据。Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示如何使用这些python库来完成一个真实的数据案例。算法与项目相结合,选择经典kaggle项目,从数据预处理开始一步步代码实战带大家入门机器学习。
  • 所需E币: 0
    时间: 2023-6-7 15:03
    大小: 1.96KB
    分享课程——《跟我一起写DApp(转型区块链开发推荐课程)》,课程内容上主要分为3部分:项目背景以及项目级智能合约实战;以太坊SDK使用以及后端服务开发;fisco-bcos简介及区块链应用实战。本课程属于讲师个人原创课程,并非照搬国外技术开发课程,课程中可以学习Go-web开发,gin框架的使用,提升智能合约开发能力,授课风格以代码驱动为主,希望学习者能够积极动手实践,并在评论区交流互动,分享自己的学习心得和体会。课程源码可以供学习者下载。第一章:课程简介与环境准备第二章:项目需求与智能合约实战第三章:以太坊go-sdk使用第四章:后端应用开发实战第五章:联盟链fisco-bcos使用介绍第六章:基于fisco-bcos应用实战