• [技术干货] 函数计算3.0,你的体验如何?
    函数计算 3.0 版是产品的一个重大升级版本,在函数管理、函数执行引擎、自定义域名、函数授权及弹性伸缩规则方面进行了多项改进。新版具备以下优点:1、极简体验,更易集成,复杂度降低 40%。2. 技术升级,释放红利,资源成本减少 92%。3. 让 AI 应用开发更简单,AI 应用一键部署,上手难度降低 80%。1、 你如何看待本次函数计算的版本升级?2、版本升级后,将会在哪些场景方便你的使用,请举例说明。3、你会使用函数计算进行AI应用开发吗?请分享你的开发案例
  • [技术干货] 服务器操作系统与 AI 和云计算的结合,将会掀起一股什么样的热潮?
    《国产服务器操作系统发展报告(2023)》称操作系统已步入 2.0 时代,服务器操作系统与 AI 和云计算的结合已是大势所趋,你认为龙蜥开源操作系统在云+AI 的时代面临哪些挑战?对此你有什么看法?
  • 写一个chatgpt 安卓应用会被下架吗,需要满足什么条件才能不被下架?
    写一个chatgpt 安卓应用会被下架吗,需要满足什么条件才能不被下架?
  • [其他] Midjourney提示的风格主题
    再来点更高级的。  Midjourney可以快速生成各种风格的人物照片,并且这些照片足以以假乱真,在镜头、光线和构图的使用上也可以做到专业级。 核心提示词使用规则,包含以下部分 人物主体描述 背景环境描述 人物外形描述 风格描述 设备/镜头参数  举例。 人物主体描述:21years Chinese girl 背景环境描述:in school 人物外形描述:beauty,long black hair 风格描述:sun light,insane detail,smooth light,real photography fujifilm superia,full HD 设备/镜头参数:taken on a Canon EOS R5 F1.2 IS0100 35mm  我们可以在Midjourney中转换为如下提示词: 21years Chinese girl,in school,beauty,long black hair,sun light,insane detail,smooth light,real photography fujifilm superia,full HD,taken on a Canon EOS R5 F1.2 1S0100 35mm --ar 4:3  MidJourney生成的UI/UX(User Interface用户界面)/(User eXperience 用户体验)图像虽然不能自接作为源文件使用,但是可以作为排版、配色、构图等视觉元素的参考素材,并且与传统素材比较起来更加直观和生动。核心提示词中的横纵比参数关乎实际产品的排版,比如移动端产品为9:16、计算机端产品为16:9。 
  • [其他] Midjourney的提示词
     提示词大致由3个部分构成:主体描述、环境背景、艺术风格。 如果你不指定,那就是随机。 比如:a cat 太简单,AI也会随意给你生成,反正是只cat就行。 所以我们做加法,变成 a cute cat sleeps on the eaves 这样就有了主体、环境信息了 AI就懂了很多,在做一个简单加法,加上艺术风格 a cute cat sleeps on the eaves, illustration 让AI生成插画风格  来个高级点的 https://abc/xyz Chinese boy,8k,3d style,cartoon character design,rich details, soft light, relaxed, OC rendering --iw 2 其中最后的--iw 2参数指的是提升图像的权重,权重越高,生成的结果和提供的参考照片(https里指定的)就越似,--iw 2是最高权重。  调整宽高比、放大倍数等参数可以改变生成图像的风格。为了更改这些参数,将它们添加到提示词的末尾。确保在提示词中准确地指定了所需的参数,并将参数按照正确的格式放置在提示词的最后。 
  • [其他] Midjourney介绍
    Midjourney 可以将提示词(英文为Prompt)转化为视觉图像。它由旧金山的实验室Midjourney创建,采用了类似于OpenAI的DALL-E(一款人工智能图像生成器)和稳定扩散的算法,可以快速地将文字转换为图像。Midjourney提供了一种简单的方式来释放人工智能的创造力。你只需加入Discord服务器,向机器人发送消息,使用/imagine命令输入提示词即可获得一组图像。为设计师,这些可以激发想象力,可以更快、更准确地创造出高质量的设计作品。通过Midjourney快速地获得设计项目的视觉概念。它只提供有限次数的免费试用,然后需要付费按月订阅。Midjourney 有两大类模型,分别是MJ version和Niji version,MJversion主打通用型模型,后者主打二次元漫画型模型提示词(Prompt)是一种于引导人工智能生成模型输出的信息。它为模型提供了上下文和方向,以便生成适当的回应或文本。提示词的设计决定了模型生成的内容,因此它在确保生成结果的准确性、连贯性和可控性方面起着关踺的作用。提示词通常是文本短语:我们将其称为神奇咒语:用于指导模型生成特定风格、主题或内容的像。在处理提示词时,Midjourney Bot将其分解为更小的部分,称为标记,标记可以是单词、短语或句子中的一个成分。一个好的提示词应该具备以下特点。清晰明确 以确保模型能够准确理解和执行预期的图像生成任务。描述详细 包含足够的细节和描述,以帮助模型生成所需的图像特征、内容或情景。提供风格指导 如果需要生成特定风格的,以引导模型生成符合该风格要求的图像。匹配上下文 提示词应该与图像生成任务的上下文相匹配,以便模型可以理解所需的图像背景和环境。激发创造力 激发模型的创造力,鼓励其生成独特而令人惊喜的图像结果。Midjourney生成图像的过程非常简单:3步即可完成。在斜杠命令弹出窗囗中输入/imagine prompt在字段中输入要创建的图像的提示词发送消息
  • [技术干货] 最近大火的AIGC是什么?有什么应用场景和产品?【转】
    作者:有赞-刘龙链接:https://www.zhihu.com/question/569569613/answer/2982279409来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。设计界总是一波未平一波又起,从区块链到元宇宙,这轮风开始吹到AIGC,什么是AIGC?AIGC全称(AI Generated Content)是一种新型的内容创作方式。越来越多数字内容工作过程中,创作者需要不断地学习探索和创新,以满足不断变化的市场需求。(本篇文章只聚焦设计内容生成方向,不展开ChatGPT辅助研究能力)AI在有赞增长实验室实际设计业务中的应用探索M2L增长实验室(Marketing To Leads)包含了公域营销(增长工程、广告投放、渠道拓展)、内容营销(内容策划、内容运营、渠道分发)、社群运营(活动策划、私域营销、人群运营)、商机培育(需求探索、商机培育、线索转出)四个核心领域的工程,利用内容、数据、算法,驱动有赞通过搜索引擎、社交媒体等渠道展开精准营销,获得到有效的商家线索,探索用户需求,培育商机并输出给到各销售团队完成商家付费,带来有赞商家数的增长。随着技术不断发展为设计领域带来了许多变化和机遇,3月中旬我们团队开始了有赞经营场景AI图的打造,从可行性与推广性的角度出发,尝试AIGC在产品、品牌、营销、体验等多个领域应用与探索。市面上存在大量的AI绘画工具,每个工具擅长的画风也各有所长;例如基于Discord架构下的Midjourney,画面注重细节的构建和表达,Open AI的stable-Diffusion,画风更偏写实,Google的Disco Diffusion画风比较均衡,同时我们也发现每一类不同的模型也会有不同的风格效果,我们主要是使用当下人气最高的Midjourney展开落地。AI绘图的原理简要分析说到AI绘图,AI绘图的模型是基于GAN生成对抗网络(GenerativeAdversarialNets,GAN),是一种基于对抗学习的深度生成模型。信息可以是⽂字、图⽚、声⾳等等,编码器会把所有类型的信息都处理成低维度的 Latent,可以理解为开发人员从互联网数以万计的图片中抓取素材,每一张图片素材都会有对应的文字描述,AI通过识每一张像素点的文案,最终输出专属于你想要的图片。利用Midjourney垫图能力辅助设计官网头图AI绘图在电商中有多种应用:1、图片修饰和美化:通过使用AI绘图工具,可以对电商平台上的商品图片进行优化和美化,提升商品的视觉效果,吸引更多的消费者。2、3D渲染和展示:可以利用3D技术将商品进行全方位展示,为消费者提供更加真实、直观的商品体验,增加购买决策的可能性。3、自动化设计:自动生成商品的设计方案,帮助电商平台快速生成各种风格的设计作品,提高工作效率和创意水平。4、图像识别和智能推荐:通过对消费者的行为和偏好进行数据分析,AI绘图工具可以实现图像识别和智能推荐,向消费者推荐更符合其需求和兴趣的商品,提高销售转化率。我们计划进行把官网里面的图片,以图生图的形式,让AI帮助我们设计符合有赞风格调性的官网首图。在有赞官网实践案例:首先在创作内容前把你的需求简单描述,在Discord 中将参考图发给它,并结合意向的风格和ChatGPT中生成的关键词,就可以输出初步满足我们预期的图片,加上前提特征分析的描述,例如(主题+环境背景+构图版头+灯光+颜色+风格参考+质量&后缀)品牌传播与官网首图需要符合品牌特色和调性的图片,以往我们从海量的素材网站找图,往往很难找到和品牌完全匹配的风格,并且M2L在营销传播中经常会使用大量图片在SEM、广点通、小红书进行广告投放。现在我们通过MJ生成符合有赞风格调性的图像,可以节省很多拍摄时间和采购成本。按照以前官网真实照片通过垫底+描述的方式生出了新AI版本的三张图片,并落地在有赞官网,分别是:"做私域找有赞”、“做新零售找有赞”、“做生意找有赞”有赞600万商家,商家每年需要采购和拍摄⼤量商⽤版权图⽚⽤于营销素材(均价1500元/张)。现在使⽤ MJ ⼯具可⽆限生成的多样性素材。⼤幅降低图⽚采购成本,提⾼⽣产效率,下面是我们运用AIGC生成的图片,收集目前有赞商家高点击的模特,测试生成店铺主图,未来AI有着非常多的场景落地。4月10日有赞门罗春季发布会中,有赞发布了首个AI产品加我智能,目前已上线图文推广(为商品和页面生成更高转化率更被喜欢的推广图文)、活动策划(通过对话明确活动目标和方案并完成复杂的系统配置)两个场景,而在未来,加我智能还将会具备店铺设计、报告分析、销售加强、售后客服、商品制作等能力。AI对于有赞增长实验室的帮助1.辅助创意,视觉品质提升在我们历经一个月的探索中,通过使用AI辅助进行相关设计工作。使用AIGC辅助可以提升整个设计的品质,帮团队内设计师产出更高质量的设计,同时我们也储备了一定prompt作为设计资产,可作为图片素材库,为后续快速上线不同经营类目的落地页做准备。2.提升效率,快速出图业务需要做不同行业不同场景的设计图时,通过AIGC就可以让图片生出咖啡店、水果店、蛋糕店,能快速替换服饰箱包、蛋糕烘焙、茶饮酒水、鲜花果蔬风格的有赞生意经营场景图,下面是我们生成的一些案例图:展望未来,全新的设计模式已经出现未来,随着AI绘画技术的不断发展和应用,我们将看到更多的艺术作品、设计方案和数字媒体内容将会通过AI绘画技术的支持而得以创作。同时,AI绘画也将会促进艺术设计领域的创新和发展,推动人工智能技术与艺术设计的融合,创造出更多前所未有的艺术形式和体验。我们有理由相信,AI绘画将会为未来的设计和艺术带来更多的新机遇和无限可能,横放手机,一起来看看AI版有赞经营场景图吧!迎接AI的到来!转自 https://www.zhihu.com/question/569569613/answer/2982279409?utm_id=0
  • [技术干货] 一文带你了解AIGC【转】
    AIGC是什么?AIGC( AI Generated Content)是利用人工智能来生成你所需要的内容,GC的意思是创作内容。与之相对应的概念中,比较熟知的还有PGC,是专业人员用来创作内容;UGC是用户自己创造内容,顾名思义AIGC是利用人工智能来创造内容。2AIGC的技术原理?AIGC 是指利用GAN(生成对抗网络)、Transformer 模型、Diffusion 模型等基础生成算法模型、预训练模型以及 CLIP(跨模态学习模型)等 AI 技术,通过对既有数据的学习和发散,基于与人类交互所确定的主题,由 AI 算法模型完全自主、自动生成对应内容,从而帮助互联网、传媒、电商、影视、娱乐等行业进行文本、图像、音视频、代码、策略等多模态内容的单一生成或跨模态生成,以提升内容生产效率与多样性。AIGC 也是继 UGC、PGC 之后新型利用 AI 技术自动生成内容的生产方式,被认为是继专业生产内容(PGC)、用户生产内容(UGC)之后的新型内容创作方式。目前主要用在文字、图像、视频、音频、游戏以及虚拟人上等。3AIGC的功能?1)文字创作AIGC生成文字目前主要被应用于新闻的撰写、给定格式的撰写以及风格改写。比如用户可以通过输入一段对于目标文章的描述或者要求,系统会自动抓取数据,根据我们描述的指令进行创作。2)图像创作技术平台降低了艺术绘画创作的门槛,用户只需要通过输入文字描述,计算机将会自动生成一张作品。3)视频创作例如 Google 推出了 AI 视频生成模型 Phenaki 能够根据文本内容生成可变时长视频的技术,在公布的 DEMO 中,Phenaki 基于几百个单词组成一段前后逻辑连贯的视频只需两分钟。4)音频剪辑AIGC生成音频早被应用于我们的日常生活当中,比如常用的手机导航中的声音。更深层次的应用将会是虚拟人领域,AIGC 不仅可以生成虚拟人的声音,并可以创造出说的内容。5)游戏开发AIGC在游戏当中的应用可分为两方面,一方面用于场景和故事的搭建,另一方面玩家可以通过 AIGC 的平台工具来创建自己的虚拟人,可以用于游戏中的打金等活动。6)代码生成资料显示,2022 年 AIGC 发展速度惊人,迭代速度更是呈现指数级爆发,其中深度学习模型不断完善、开源模式的推动、大模型探索商业化的可能,成为 AIGC 发展的“加速度”。4AIGC的创作类型目前为止,与 AIGC 相关的创作类型主要有三种:1、内容平台的一种自动化作业方式比如 CCTV 的 AIGC 平台,就包括智能采编、模板生成、画质优化等等;部分语音类 app,通过语音合成(TTS)技术,提供文本自动转语音的能力;流媒体平台,通过算法对画面画质进行优化,提高清晰度等等。2、AI 科研机构的多模态应用,实现内容生成比如中科院自动化所的跨模态通用人工智能平“紫东太初”,就能够做到“以图生音”“以音生图”。百度文心大模型的“AI 画家”,则在前不久的元宵节,生成与地点相匹配的专属画作。3、科技企业及创业公司的数字人、虚拟人制作通过自主开发、平台开发等形式,合成全新的人物形象,与用户开展互动。比如 AI 手语主播,通过 AI 算法将文本转化为手语信息,为听障朋友提供服务;品牌代言人,火星车数字人祝融号跟广大用户进行互动;虚拟偶像,通过生动的表情、动作、语言等展示才艺,与粉丝对话;以及智能客服、游戏陪玩等等。5AIGC有哪些应用价值?AIGC将有望成为数字内容创新发展的新引擎。1)AIGC能够以优于人类的制造能力和知识水平承担信息挖掘、素材调用、复刻编辑等基础性机械劳动,从技术层面实现以低边际成本、高效率的方式满足海量个性化需求。2)AIGC能够通过支持数字内容与其他产业的多维互动、融合渗透从而孕育新业态新模式。3)助力“元宇宙”发展。通过AIGC加速复刻物理世界、进行无限内容创作,从而实现自发有机生长。1)AIGC+传媒:写稿机器人、采访助手、视频字幕生成、语音播报、视频锦集、人工智能合成主播。2)AIGC+电商:商品3D模型、虚拟主播、虚拟货场。3)AIGC+影视:AI剧本创作、AI合成人脸和声音、AI创作角色和场景、AI自动生成影视预告片。4)AIGC+娱乐:AI换脸应用(如FaceAPP、ZAO)、AI作曲(如初音未来虚拟歌姬)、AI合成音视频动画。5)AIGC+教育:AI合成虚拟教师、AI根据课本制作历史人物形象、AI将2D课本转换为3D。6)AIGC+金融:通过AIGC实现金融资讯、产品介绍视频内容的自动化生产,通过AIGC塑造虚拟数字人客服。7)AIGC+医疗;AIGC为失声者合成语言音频、为残疾人合成肢体投影、为心理疾病患者合成医护陪伴。8)AIGC+工业:通过AIGC完成工程设计中重复的低层次任务,通过AIGC生成衍生设计,为工程师提供灵感。6AIGC商业模式如何?1)作为底层平台接入其他产品对外开放,按照数据请求量和实际计算量计算:GPT-3对外提供API接口,采用的四种模型分别采用不同的按量收费方式。2)按产出内容量收费:包括DALL·E、Deep Dream Generator等AI图像生成平台大多按照图像张数收费。3)直接对外提供软件:例如个性化营销文本写作工具AX Semantics则以约1900人民币/月的价格对外出售,并以约4800欧元/月的价格提供支持定制的电子商务版本。大部分C端AGC工具则以约80人民币/月的价格对外出售。4)模型训练费用:适用于NPC训练等个性化定制需求较强的领域。5)根据具体属性收费:例如版权授予(支持短期使用权、长期使用权、排他性使用权和所有权多种合作模式,拥有设计图案的版权)、是否支持商业用途(个人用途、企业使用、品牌使用等)、透明框架和分辨率等。7AIGC的行业门槛及壁垒是什么?1)打造一体化解决方案服务能力:AIGC本质上提供的是内容的生成工具,和传统的内容辅助编辑逻辑是相同的。采集、生产、媒资管理、分发消费等视频整个生命周期,一般都需要覆盖内容生成的全生命周期。2)与行业的深度绑定关系:通过和行业形成深度绑定关系,接入相关平台或底层系统的,与原来的内容载体建立良好的合作关系,除去说明场景可行性外,还需要强调对方在基础架构上的配合意愿。3)构建业务闭环:创作型的工具如何得到反馈的手段,需要新的模式形成闭环。需要从“拼接式”(需要大量的人工标注数据,只能针对具体任务,不会自我成长)到“进化式”(创造特定条件和核心能力,使之能够完成通用任务并自我成长),并与用户增加对话轮次、建立情感链接。8AIGC技术处于什么发展阶段?2021年之前,AIGC生成的主要是文字,而新一代模型可以处理的格式内容包括:文字、语音、代码、图像、视频、机器人动作等等。AIGC被认为是继专业生产内容(PGC,professional-generated content)、用户生产内容(UGC,User-generated content)之后的新型内容创作方式,可以在创意、表现力、迭代、传播、个性化等方面,充分发挥技术优势。2022年:AIGC高速发展,其中深度学习模型不断完善、开源模式的推动、大模型探索商业化的可能,成为AIGC发展的“加速度”。9AIGC的发展面临什么挑战?AIGC在引发全球关注的同时,知识产权、技术伦理将面临诸多挑战和风险。同时AIGC距离通用人工智能还有较大的差距。1)知识产权争议。AIGC的飞速发展和商业化应用,除了对创作者造成冲击外,也对大量依靠版权为主要营收的企业带来冲击。2)关键技术难点。AIGC距离通用人工智能还有较大差距,当前热门的AIGC系统虽然能够快速生成图像,但是这些系统未必能够真正理解绘画的含义,从而能够根据这些含义进行推理并决策。3)创作伦理问题。部分开源的AIGC项目对生成的图像监管程度较低,数据集系统利用私人用户照片进行AI训练,侵权人像图片进行训练的现象屡禁不止。一些用户利用AIGC生成虚假名人照片等违禁图片,甚至会制作出暴力和性有关的画作。由于AI本身尚不具备价值判断能力,一些平台已经开始进行伦理方面的限制和干预,但相关法律法规仍处于真空阶段。10如何看待AIGC的未来趋势?未来AIGC将走过三个发展阶段:助手阶段、协作阶段、原创阶段。在第一阶段,AIGC将辅助人类进行内容生产;第二阶段,AIGC以虚实并存的虚拟人形态出现,形成人机共生的局面;第三阶段则是原创阶段,AIGC将独立完成内容创作。Gartner预计,到2025年,生成式人工智能将占所有生成数据的10%。推动这一变化发生的驱动力在于:1)核心技术升级不断发展。AIGC的三大基础能力包括内容孪生、内容编辑、内容创作,将随着产业发展而逐渐升级。2)产品类型逐渐丰富。人工智能的不断发展及推进,也将使AIGC模态不再仅仅局限于文本、音频、视觉三种基本形态。嗅觉、触觉、味觉、情感等多重信息感知和认知能力将以数字化的形式传输并指导人工智能进行内容创作,甚至创造出酸甜苦辣外的另一种味道。3)场景应用趋于多元。目前,AIGC已经在多个领域得到广泛应用,如金融、传媒、文娱、电商等,未来应用场景会进一步多元化。除应用场景的横向扩展外,场景与场景的融合交互也是未来的发展趋势之一。4)生态建设日益完善。技术研发的不断创新将强有力地推动内容创作,提高生成内容质量,使内容更接近人类智力水平和审美标准,同时应用于各类行业各种场景。AIGC的繁荣发展将促进资产服务快速跟进,通过对生成内容的合规评估、资产管理、产权保护、交易服务等构成AIGC的完整生态链,并进行价值重塑,充分释放其商业潜力。11AIGC未来市场空间有多大?随着标注数据累积、技术架构完善、内容行业对丰富度/事实性/个性化的要求越来越高,AIGC行业即将被推向前台。在未来2-3年间,AIGC的初创公司和商业落地案例将持续增加。目前由人工智能生成的数据占所有数据的1%不到,根据Gartner预测,到2025年,人工智能生成数据占比将达到10%。根据《Generative AI:A Creative New World》的分析,AIGC有潜力产生数万亿美元的经济价值。12AIGC的产业链分布如何?我国的AIGC行业尚未发展成型,目前,AIGC代表公司较少,且上游还有众多欠缺。国内的AIGC场景开发较少:在我国,由于技术发展不足以及投资环境的影响,AIGC大多被作为公司的部分业务、乃至相对边缘化的功能进行研发开发,独立运行的初创公司数量明显少于国外,大部分细分赛道的初创玩家在5家以下,这也间接导致了国内的AIGC场景开发较少。AIGC应用场景深度不足:国内布局最多的赛道是写作和语音合成领域,虚拟人赛道刚刚开始兴起基本均停留在内容领域。而在国外延展领域得到了更为充分的挖掘,例如个性化文本生成、合成数据等赛道均是重点布局领域。此类业务拓展的综合性要求较高,需要客户方的数字化程度以及对对应行业的充分了解
  • [技术干货] AI重写排序算法,速度快70%:DeepMind AlphaDev革新计算基础【转】
    「通过交换和复制移动,AlphaDev 跳过了一个步骤,以一种看似错误,但实际上是捷径的方式连接项目。」这种前所未见、违反直觉的思想不禁让人回忆起 2016 年那个春天。七年前,AlphaGo 在围棋上击败人类世界冠军,如今 AI 又在编程上给我们上了一课。今天凌晨,Google DeepMind CEO 哈萨比斯的两句话引爆了计算机领域:「AlphaDev 发现了一种全新且更快的排序算法,我们已将其开源到主要 C++ 库中供开发人员使用。这只是 AI 提升代码效率进步的开始。」这一次,Google DeepMind 的全新强化学习系统 AlphaDev 发现了一种比以往更快的哈希算法,这是计算机科学领域中的一种基本算法,AI 的成果现已被纳入 LLVM 标准 C++ 库 Abseil 并开源。这个成果有多重要?AlphaDev 的主要作者之一,Google DeepMind 研究科学家 Daniel J. Mankowitz 表示:「我们估计它发现的排序和哈希算法每天会在全世界被调用数万亿次。」AI 似乎从算法层面加速了世界的运转。这些算法改进了 LLVM libc++ 排序库,对于较短的序列,排序库的速度提高了 70%,对于超过 25 万个元素的序列,速度也能提高约 1.7%。Google DeepMind 表示,这是十多年来排序库这部分的第一次变化。看起来,现在 AI 不仅可以帮人写代码,而且可以帮我们写出更好的代码。在最新的博客中,新系统的作者们对 AlphaDev 进行了详细介绍。新的算法将改变计算基础数字社会推动了对计算和能源日益增长的需求。过去五十年里,数字时代依靠硬件的改进来跟上需求。但是随着微芯片接近其物理极限,改进在其上运行的代码变得至关重要。对于每天运行数万亿次的代码所包含的算法来说,这尤其重要。Google DeepMind 的这项研究就是因此产生的,相关论文已发表在《Nature》上,AlphaDev 是一个 AI 系统,它使用强化学习来发现算法,甚至超越了科学家和工程师们几十年来打磨出来的成果。总体来说,AlphaDev 发现了一种更快的排序算法。虽然数十亿人每天都在使用这些算法,但却没有人意识到这一算法还存在优化空间。排序算法应用范围广泛,从在线搜索结果、社交帖子排序,到计算机以及手机上的各种数据处理,都离不开排序算法。利用 AI 生成更好的算法将改变人类编程计算机的方式,对日益数字化的社会将产生重大影响。通过在主要的 C++ 库中开源新排序算法,全球数百万开发人员和公司现在可以在云计算、在线购物和供应链管理等各行各业的人工智能应用中使用它。这是十多年来对排序库的首次更改,也是通过强化学习设计的算法首次被添加到该库中。这将这视为使用人工智能逐步优化世界代码的重要里程碑。关于排序排序算法是一种按照特定顺序对某些任务进行排列的方法。例如,按字母先后顺序排列三个字母,从大到小排列五个数字,或者对数百万条记录的数据库进行排序。这种算法由来已久,并得到了很好的演进。其中关于排序的最早一个示例可追溯到公元 2 世纪和 3 世纪,当时学者们在亚历山大图书馆的书架上手工按字母顺序排列了数千本书。随着工业革命的到来,出现了可以帮助人们进行排序的机器,其中制表机使用打孔卡片存储信息,这些卡片被用于收集美国 1890 年的人口普查结果。随着上世纪 50 年代商用计算机的兴起,最早用于排序算法的计算机科学算法开始发展。如今,在全球的代码库中有许多不同的排序技术和算法被用于处理海量的在线数据。将一系列未排序的数字输入到算法中,输出已排序的数字。经过计算机科学家和程序员们几十年的研究,目前的排序算法已经非常高效,以至于很难再实现进一步的改进,这有点类似于试图找到一种新的节省电力或更高效的数学方法,而这些算法也是计算机科学的基石。探索新算法:汇编指令AlphaDev 从头开始探索更快的算法,而不是基于现有算法之上,除此以外,AlphaDev 还能用于寻找大多数人所不涉足的领域:计算机汇编指令。汇编指令可用于创建计算机执行的二进制代码。开发人员使用诸如 C++ 之类的高级语言编写代码,但必须将其转换为计算机能够理解的「低级」汇编指令。Google DeepMind 认为这个层次存在许多改进的空间,而这些改进在更高级的编程语言中可能很难被发现。在这个层次上,计算机的存储和操作更加灵活,这意味着存在更多潜在的改进可能性,这些改进可能对速度和能源使用产生更大的影响。代码通常是用高级编程语言(如 C++)编写的。然后,编译器将其转换为低级 CPU 指令,称为汇编指令。汇编器将汇编指令转换为可执行的机器码,以便计算机可以运行。图 A:C++ 算法示例,该算法可对最多两个元素进行排序;图 B:相应的汇编表示形式。用 AlphaGo 的方法寻找最佳算法AlphaDev 基于 Google DeepMind 此前的一项成果:在围棋、国际象棋和象棋等游戏中打败世界冠军的强化学习模型 AlphaZero。而 AlphaDev 展示了这个模型如何从游戏转移到科学挑战,以及从模拟到现实世界的应用。为了训练 AlphaDev 发现新的算法,团队将排序变成了一个单人的「组装游戏」。在每个回合中,AlphaDev 观察它所产生的算法和 CPU 中包含的信息,然后通过选择一条指令添加到算法中来下一步棋。汇编游戏是非常困难的,因为 AlphaDev 必须在大量可能的指令组合中进行高效搜索,以找到一个可以排序的算法,并且比当前的最佳算法更快。指令的可能组合数量类似于宇宙中的粒子数量,或者国际象棋(10^120 局)和围棋(10^700 局)中可能的动作组合的数量,而一个错误的动作就可以使整个算法失效。图 A:组装游戏。玩家 AlphaDev 接收系统 st 的状态作为输入,并通过选择一条汇编指令添加到目前已生成的算法中来下棋。图 B:奖励计算。每次移动后,生成的算法都会输入测试输入序列 —— 对于 sort3,这对应于三个元素序列的所有组合。该算法然后生成一个输出,将其与排序情况下排序序列的预期输出进行比较。智能体根据算法的正确性和延迟获得奖励。在构建算法时,对于每次的一条指令,AlphaDev 通过将算法的输出与预期结果进行比较来检查它是否正确。对于排序算法,这意味着无序数字进入,正确排序的数字出来。团队会奖励 AlphaDev 对数字的正确排序以及排序的速度和效率,然后 AlphaDev 通过发现正确、更快的程序来赢得比赛。它发现了更快的排序算法AlphaDev 发现了新的排序算法,这些算法导致 LLVM libc++ 排序库得到改进:对于较短的序列,排序库的速度提高了 70%,对于超过 25 万个元素的序列,速度提高了约 1.7%。其中,Google DeepMind 团队更专注于改进三到五个元素的短序列排序算法。这些算法是使用最广泛的算法之一,因为它们通常作为更大排序函数的一部分被多次调用,改进这些算法可以提高对任意数量项目进行排序的整体速度。为了让新的排序算法对人们更有用,团队对算法进行了逆向工程并将它们翻译成 C++,这是开发人员使用的最流行的编程语言之一。目前,这些算法已在 LLVM libc++ 标准排序库(https://reviews.llvm.org/D118029)中提供,被全球数百万开发人员和公司使用。「交换和复制动作」,神之一手重现?事实上,AlphaDev 不仅发现了更快的算法,而且还发现了新的方法。它的排序算法包含新的指令序列,每次应用时都会节省一条指令 —— 这显然会产生巨大的影响,因为这些算法每天都要使用数万亿次。他们把这些称为「AlphaDev 交换和复制动作」。这种新颖的方法让人联想到 AlphaGo 的「第 37 步」—— 当时这这种反直觉的下法让围观者目瞪口呆,并导致李世石这位传奇围棋选手被打败。通过交换和复制动作,AlphaDev 跳过了一个步骤,以一种看起来像错误但实际上是捷径的方式连接项目。这表明 AlphaDev 有能力发掘出原创性的解决方案,并挑战人类对如何改进计算机科学算法的思考方式。左图:min (A,B,C) 原始的 sort3 实现;右图:AlphaDev 交换移动 ——AlphaDev 发现你只需要 min (A,B)。左图:在一个更大的排序算法中使用 max(B,min(A,C,D))的原始实现,用于排序八个元素;右图:AlphaDev 发现,使用其复制动作时,只需要 max(B,min(A,C))。扩展能力测验:从「排序」到「哈希」在发现更快的排序算法后,团队测试了 AlphaDev 是否可以概括和改进不同的计算机科学算法:哈希。哈希是计算中用于检索、存储和压缩数据的基本算法。就像使用分类系统来定位某本书的图书管理员一样,哈希算法可以帮助用户知道他们正在寻找什么以及在哪里可以找到它。这些算法获取特定密钥的数据(例如用户名 “Jane Doe”)并对其进行哈希处理 —— 这是一个将原始数据转换为唯一字符串(例如 1234ghfty)的过程。计算机使用此哈希来快速检索与密钥相关的数据,而不是搜索所有数据。团队将 AlphaDev 应用于数据结构中最常用的哈希算法之一,尝试发现更快的算法。当将其应用于 9-16 字节范围的哈希函数时,AlphaDev 发现的算法速度提高了 30%。今年,AlphaDev 的新哈希算法已被发布到开源 Abseil 库中,可供全球数百万开发人员使用,它现在大概每天被使用数万亿次。开源地址:https://github.com/abseil/abseil-cpp/commit/74eee2aff683cc7dcd2dbaa69b2c654596d8024e结语Google DeepMind 通过优化和推出改进的排序和哈希算法,供世界各地的开发人员使用,AlphaDev 展示了其概括和发现具有现实影响的新算法的能力。AlphaDev 可被视为开发通用 AI 工具的一步,它可以帮助优化整个计算生态系统并解决其他造福社会的问题。虽然在低级汇编指令空间中进行优化非常强大,但随着算法的增长, AlphaDev 仍存在局限性,团队目前正在探索其直接在高级语言(如 C++)中优化算法的能力,这对开发人员来说更加有用。AlphaDev 的发现,例如交换和复制动作,不仅表明它可以改进算法,还可以找到新的解决方案。这些发现或许能够激励研究人员和开发人员创建可以进一步优化基础算法的技术和方法,以创建更强大和可持续的计算生态系统。参考内容:https://www.deepmind.com/blog/alphadev-discovers-faster-sorting-algorithms?utm_source=twitter&utm_medium=social&utm_campaign=OCShttps://news.ycombinator.com/item?id=36228125https://twitter.com/DJ_Mankowitz/status/1666468646863130631
  • [问题求助] 有什么大模型的API调用比较迅速吗?
    有什么大模型的API调用比较迅速吗?延迟越低越好
  • [问题求助] AICC 22.100 omu用户ssh登录操作系统访问拒绝的解决方法是什么?
    AICC 22.100 omu用户ssh登录操作系统访问拒绝的解决方法是什么?
  • [其他] 神经风格迁移
    所谓图像的神经风格迁移(Neural Style Transfer),是指在给定图像A和图像B的情况下,通过神经网络将这两张图像转化为C,且C同时具有图像A的内容和图像B的风格。例如,一张图像是长城,另一张图像是黄公望的《富春山居图》的一部分,第一张图像的长城内容和第二张图像的山水画风格,通过神经网络进行风格迁移之后得到了一幅具有山水画风格的图像神经风格迁移领域相对较早的一篇论文为Gatys等人发表的A Neural Algorithm of Artistic Style,其中系统地阐述了神经风格迁移的主要思想和原理。神经风格迁移的理念认为图像的内容和风格是可以通过神经网络学习分离开来。同样以图像A、B和C为例,神经风格迁移的主要思想如下.图像C保留图像A的内容,或者说是图像A的语义。这个对于神经网络来说并不困难,各种深度卷积网络都可以较好地实现图像A到C的语义编码。图像C具备图像B的风格。风格不像是图像语义,风格是一个整体或全局的概念,一般来说很难把握,在Gatys等人的设计中,考虑了使用图像特征之间的Gram矩阵来衡量图像特征的相关性。所渭图像的Gram矩阵,就是每个图像特征之间的内积所构成的矩阵。再来一张
  • [技术干货] 使用bert(base)对比大语言模型(ChatGLM2-6B)做文本分类心得总结
    什么是bertBidirectional Encoder Representations from Transformers (BERT) 是一种基于变压器的机器学习技术,用于自然语言处理 (NLP) 预训练,由 Google 开发。 BERT 由 Jacob Devlin 和他的 Google 同事于 2018 年创建并发布。 2019 年,谷歌宣布已开始在其搜索引擎中使用 BERT,到 2020 年底,它几乎在所有英语查询中都使用了 BERT。 2020 年的一项文献调查得出结论,在一年多的时间里,BERT 已成为 NLP 实验中无处不在的基线,超过 150 篇研究出版物分析和改进了该模型。BERT 有两种模型:BERTBASE:12 个编码器和 12 个双向自注意头BERTLARGE:24 个编码器和 16 个双向自注意头。 两种模型都是根据从 BooksCorpus 中提取的 8 亿单词和英语维基百科中的 25 亿单词的未标记数据进行预训练的。bert与大模型(chatGPT)的区别Google 的 BERT(Bidirectional Encoder Representations from Transformers)和 ChatGPT(GPT-3.5)都是人工智能模型,但它们的应用场景和任务不同。BERT 是一种预训练语言模型,旨在为自然语言处理任务提供高质量的特征表示。它通过双向 Transformer 网络结构学习自然语言的上下文信息,从而在各种自然语言理解任务中表现出色,如文本分类、命名实体识别、情感分析等。BERT 模型的预训练数据来自于互联网上的大量文本语料库,例如维基百科和新闻文章等。而 ChatGPT 则是一种大型语言模型,旨在生成自然语言文本。它使用了单向的 Transformer 网络结构,并通过海量文本数据进行训练,从而学会生成人类类似的文本响应。ChatGPT 的应用场景主要是在线聊天机器人、自然语言生成、文本摘要等。虽然 BERT 和 ChatGPT 都是基于 Transformers 模型开发的,但它们的应用领域和任务不同,因此它们的结构和预训练数据也不同。在实际应用中,研究人员可以根据具体任务需求选择合适的模型进行微调和优化。bert与大模型(ChatGLM2-6B)在中文训练规模上的区别BERT 和 ChatGLM2-6B 都是基于 Transformers 模型的人工智能助手,但它们的训练规模和能力有所不同。以下是 BERT 和 ChatGLM2-6B 训练规模之间的对比:模型结构: BERT 是一种双向 Transformer 模型,采用双向编码器来学习文本数据中的上下文信息。它的预训练目标是最大化预测下一句的正确概率。BERT 模型有多种版本,如 BERT-base(1.1 亿参数)、BERT-large(3.4 亿参数)和 BERT-xl(11 亿参数)。 ChatGLM2-6B 是一种基于 BERT 模型的改进版,采用了单向 Transformer 网络结构。它的预训练目标是生成自然语言文本。ChatGLM2-6B 模型的版本为 ChatGLM2-6B,参数数量为 6 亿。训练数据: BERT 和 ChatGLM2-6B 的训练数据有所不同。BERT 的预训练数据主要包括了维基百科(英语版)和新闻文章等互联网文本资源。而 ChatGLM2-6B 的训练数据主要来源于清华大学 KEG 实验室和智谱 AI 公司提供的中文语料库,包括网页、书籍、新闻、论坛、问答对话等。训练规模: 从上述模型版本中,我们可以看出 ChatGLM2-6B 模型的训练规模大于 BERT 模型。ChatGLM2-6B 模型的参数数量为 6 亿,而 BERT-xl 只有 11 亿。这意味着 ChatGLM2-6B 模型在处理自然语言任务时具有更强的表达能力。性能和应用场景: ChatGLM2-6B 模型在保留了 BERT 模型优点的基础上,针对中文问答场景进行了优化。相较于 BERT 模型,ChatGLM2-6B 模型在中文问答任务上具有更好的性能。此外,ChatGLM2-6B 模型还可以应用于其他自然语言处理任务,如文本分类、命名实体识别等。bert(base)做文本分类为啥比大模型(ChatGLM2-6B)快很多先说结论:我们的项目是对用户分类其他的评价,做一个预分类,看看具体是反馈给哪个部门。经过大量测试,我们发现bert模型,无论是训练还是生成,所耗费的时间都比chatGLM2-6B快非常多原因分析:BERT 和 ChatGLM2-6B 都是基于 Transformers 模型的人工智能助手,但它们在训练和生成速度上的差异,可能源于以下几个方面:模型结构: BERT 是一种双向 Transformer 模型,采用双向编码器来学习文本数据中的上下文信息。它的预训练目标是最大化预测下一句的正确概率。BERT 模型有多种版本,如 BERT-base(1.1 亿参数)、BERT-large(3.4 亿参数)和 BERT-xl(11 亿参数)。 ChatGLM2-6B 是一种基于 BERT 模型的改进版,采用了单向 Transformer 网络结构。它的预训练目标是生成自然语言文本。ChatGLM2-6B 模型的版本为 ChatGLM2-6B,参数数量为 6 亿。训练数据和预处理: BERT 和 ChatGLM2-6B 的训练数据有所不同。BERT 的预训练数据主要包括了维基百科(英语版)和新闻文章等互联网文本资源。而 ChatGLM2-6B 的训练数据主要来源于清华大学 KEG 实验室和智谱 AI 公司提供的中文语料库,包括网页、书籍、新闻、论坛、问答对话等。 在预处理方面,BERT 模型采用了掩码语言模型(Masked Language Model,MLM)进行预训练,而 ChatGLM2-6B 采用了下一句预测任务(Next Sentence Prediction,NSP)。MLM 预训练目标使得模型在生成文本时更关注词汇的上下文信息,而 NSP 则相对关注整句话的语义关系。这使得 BERT 在中文分类任务上表现较好。生成速度: 在生成速度方面,BERT 和 ChatGLM2-6B 的差异主要体现在生成任务的复杂性。BERT 模型在生成文本时,采用了无监督的 MLM 预训练目标,使得模型能够在没有明确任务指导的情况下生成连贯、自然的文本。而 ChatGLM2-6B 模型在生成任务上采用了有监督的 NSP 任务,其生成速度相对较慢,因为模型需要在给定上下文中预测下一个句子。综上所述,BERT 在中文分类任务上相较于 ChatGLM2-6B 具有优势,主要得益于其双向 Transformer 结构、MLM 预训练目标以及模型规模。而在训练和生成速度方面,主要得益于其较小的模型规模、高效的优化算法和硬件设施,因此快很多如果想提示ChatGLM2-6B的速度,建议量化到Int4,同时减少训练的轮数(但是这会使得丢失率变大),需要权衡利弊
  • [技术干货] 如何用 Python 和深度迁移学习做文本分类【转】
    本文为你展示,如何用10几行 Python 语句,把 Yelp 评论数据情感分类效果做到一流水平。疑问在《如何用 Python 和 fast.ai 做图像深度迁移学习?》一文中,我为你详细介绍了迁移学习给图像分类带来的优势,包括:用时少成本低需要的数据量小不容易过拟合有的同学,立刻就把迁移学习的这种优势,联系到了自己正在做的研究中,问我:老师,迁移学习能不能用在文本分类中呢?正在为数据量太小发愁呢!好问题!答案是可以。回顾《如何用机器学习处理二元分类任务?》一文,我们介绍过文本分类的一些常见方法。首先,要把握语义信息。方法是使用词嵌入预训练模型。代表词语的向量,不再只是一个独特序号,而能够在一定程度上,刻画词语的意义(具体内容,请参见《如何用Python处理自然语言?(Spacy与Word Embedding)》和《如何用 Python 和 gensim 调用中文词嵌入预训练模型?》)。其次,上述方法只能表征单个词语含义,因此需要通过神经网络来刻画词语的顺序信息。例如可以使用一维卷积神经网络(One Dimensional Convolutional Neural Network, 1DCNN):或者使用循环神经网络(Recurrent Neural Network, RNN):还有的研究者,觉得为了表征句子里词语顺序,用上 CNN 或者 LSTM 这样的复杂结构,有些浪费。于是 Google 干脆提出了 Universal Sentence Encoder ,直接接受你输入的整句,然后把它统一转换成向量形式。这样可以大幅度降低用户建模和训练的工作量。困难这些方法有用吗?当然有。但是 Jeremy Howard 指出,这种基于词(句)嵌入预训练的模型,都会有显著缺陷,即领域上下文问题。这里为了简化,咱们只讨论英文这一种语言内的问题。假设别人是在英文 Wikipedia 上面训练的词嵌入向量,你想拿过来对 IMDB 或 Yelp 上的文本做分类。这就有问题了。因为许多词语,在不同的上下文里面,含义是有区别的。直接拿来用的时候,你实际上,是在无视这种区别。那怎么办?直觉的想法,自然是退回去,我不再用别人的预训练结果了。使用目前任务领域的文本,从头来训练词嵌入向量。可是这样一来,你训练工作量陡增。目前主流的 Word2vec , Glove 和 fasttext 这几个词嵌入预训练模型,都出自名门。其中 word2vec 来自于 Google,Glove 来自于斯坦福,fasttext 是 facebook 做的。因为这种海量文本的训练,不仅需要掌握技术,还要有大量的计算资源。同时,你还很可能遭遇数据不足的问题。这会导致你自行训练的词嵌入模型,表现上比之前拿来别人的,结果更差。维基百科之所以经常被使用来做训练,就是因为文本丰富。而一些评论数据里面,往往不具备如此丰富的词汇。怎么办呢?迁移Jeremy Howard 提出了一种方法,叫做“用于文本分类的通用语言模型微调(ULMFiT)”。论文在这里:Howard, J., & Ruder, S. (2018). Universal language model fine-tuning for text classification. In Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) (Vol. 1, pp. 328-339).在这篇文章里,他提出了一个构想。有人(例如早期研究者,或者大机构)在海量数据集(例如Wikipedia)上训练语言模型。之后发布这个模型,而不只是词嵌入向量的表达结果;普通用户拿到这个模型后,把它在自己的训练文本(例如 Yelp 或者 IMDB 评论)上微调,这样一来,就有了符合自己任务问题领域上下文的语言模型;之后,把这个语言模型的头部,加上一个分类器,在训练数据上学习,这就有了一个针对当前任务的完整分类模型;如果效果还不够好,可以把整个儿分类模型再进行微调。文中用了下图,表达了上述步骤。注意在这个语言模型中,实际上也是使用了 AWD-LSTM 作为组块的(否则无法处理词语的顺序信息)。但是你根本就不必了解  AWD-LSTM 的构造,因为它已经完全模块化包裹起来了,对用户透明。再把我们那几个比方拿出来说说,给你打打气:你不需要了解显像管的构造和无线信号传输,就可以看电视和用遥控器换台;你不需要了解机械构造和内燃机原理,就可以开汽车。用 Python 和 fast.ai 来做迁移学习,你需要的,只是看懂说明书而已。下面,我们就来实际做一个文本分类任务,体会一下“通用语言模型微调”和深度迁移学习的威力。数据我们使用的文本数据,是 Yelp reviews Polarity ,它是一个标准化的数据集。许多文本分类的论文,都会采用它进行效果对比。我们使用的版本,来自于 fast.ai 开放数据集,存储在 AWS 上。它和 Yelp reviews Polarity 的原始版本在数据内容上没有任何区别,只不过是提供的 csv ,从结构上符合 fast.ai 读取的标准化需求(也就是每一行,都把标记放在文本前面)。点击这个链接,你就能看到 fast.ai 全部开放数据内容。其中很多其他数据类别,对于你的研究可能会有帮助。我们进入“自然语言处理”(NLP)板块,查找到 Yelp reviews - Polarity 。这个数据集有几百兆。不算小,但是也算不上大数据。你可以把它下载到电脑中,解压后查看。注意在压缩包里面,有2个 csv 文件,分别叫做 train.csv(训练集)和 test.csv(测试集)。我们打开 readme.txt 看看,其中数据集的作者提到:The Yelp reviews polarity dataset is constructed by considering stars 1 and 2 negative, and 3 and 4 positive. For each polarity 280,000 training samples and 19,000 testing samples are take randomly. In total there are 560,000 trainig samples and 38,000 testing samples. Negative polarity is class 1, and positive class 2.之所以叫做极性(Polarity)数据,是因为作者根据评论对应的打分,分成了正向和负向情感两类。因此我们的分类任务,是二元的。训练集里面,正负情感数据各 280,000 条,而测试集里面,正负情感数据各有 19,000 条。网页上面,有数据集作者的论文链接。该论文发表于 2015 年。这里有论文的提要,包括了不同方法在相同数据集上的性能对比。如图所示,性能是用错误率来展示的。 Yelp reviews - Polarity 这一列里面,最低的错误率已经用蓝色标出,为 4.36, 那么准确率(accuracy)便是 95.64%。注意,写学术论文的时候,一定要注意引用要求。如果你在自己的研究中,使用该数据集,那么需要在参考文献中,添加引用:Xiang Zhang, Junbo Zhao, Yann LeCun. Character-level Convolutional Networks for Text Classification. Advances in Neural Information Processing Systems 28 (NIPS 2015).环境为了运行深度学习代码,你需要一个 GPU 。但是你不需要去买一个,租就好了。最方便的租用方法,就是云平台。在《如何用 Python 和 fast.ai 做图像深度迁移学习?》一文中,我们提到了,建议使用 Google Compute Platform 。每小时只需要 0.38 美元,而且如果你是新用户, Google 会先送给你300美金,1年内有效。我为你写了个步骤详细的设置教程,请使用这个链接访问。当你的终端里面出现这样的提示的时候,就证明一切准备工作都就绪了。我把教程的代码,已经放到了 github 上面,请使用以下语句,下载下来。git clone https://github.com/wshuyi/demo-nlp-classification-fastai.git之后,就可以呼叫 jupyter 出场了。jupyter lab注意因为你是在 Google Compute Platform 云端执行 jupyter ,因此浏览器不会自动弹出。你需要打开 Firefox 或者 Chrome,在其中输入这个链接(http://localhost:8080/lab?)。打开左侧边栏里面的 demo.ipynb。本教程全部的代码都在这里了。当然,你如果比较心急,可以选择执行Run->Run All Cells,查看全部运行结果。但是,跟之前一样,我还是建议你跟着教程的说明,一步步执行它们。以便更加深刻体会每一条语句的含义。载入在 Jupyter Lab 中,我们可以使用 !+命令名称 的方式,来执行终端命令(bash command)。我们下面就使用 wget 来从 AWS 下载 Yelp 评论数据集。!wget https://s3.amazonaws.com/fast-ai-nlp/yelp_review_polarity_csv.tgz在左边栏里,你会看到 yelp_review_polarity_csv.tgz 这个文件,被下载了下来。对于 tgz 格式的压缩包,我们采用 tar 命令来解压缩。!tar -xvzf yelp_review_polarity_csv.tgz左侧边栏里,你会看到 yelp_review_polarity_csv 目录解压完毕。我们双击它,看看内容。文件下载和解压成功。下面我们从 fast.ai 调用一些模块,来获得一些常见的功能。from fastai import *from fastai.text import *from fastai.core import *我们设置 path 指向数据文件夹。path = Path('yelp_review_polarity_csv')然后我们检查一下训练数据。train_csv = path/'train.csv'train = pd.read_csv(train_csv, header=None)train.head()每一行,都包括一个标签,以及对应的评论内容。这里因为显示宽度的限制,评论被折叠了。我们看看第一行的评论内容全文:train.iloc[0][1]对于验证集,我们也仿照上述办法查看。注意这里数据集只提供了训练集和“测试集”,因此我们把这个“测试集”当做验证集来使用。valid_csv = path/'test.csv'valid = pd.read_csv(valid_csv, header=None)valid.head()下面我们把数据读入。data_lm = TextLMDataBunch.from_csv(path, valid='test')data_clas = TextClasDataBunch.from_csv(path, valid='test', vocab=data_lm.train_ds.vocab)注意,短短两行命令,实际上完成了若干功能。第一行,是构建语言模型(Language Model, LM)数据。第二行,是构建分类模型(Classifier)数据。它们要做以下几个事儿:语言模型中,对于训练集的文本,进行标记化(Tokenizing)和数字化(Numericalizing)。这个过程,请参考我在《如何用Python和机器学习训练中文文本情感分类模型?》一文中的介绍;语言模型中,对于验证集文本,同样进行标记化(Tokenizing)和数字化(Numericalizing);分类模型中,直接使用语言模型中标记化(Tokenizing)和数字化(Numericalizing)之后的词汇(vocabs)。并且读入标签(labels)。因为我们的数据量有数十万,因此执行起来,会花上几分钟。结束之后,我们来看看数据载入是否正常。data_lm.train_ds.vocab_size训练数据里面,词汇一共有60002条。我们看看,词汇的索引是怎么样的:data_lm.train_ds.vocab.itos分类器里面,训练集标签正确载入了吗?data_lm.train_ds.labels验证集的呢?data_lm.valid_ds.labels数据载入后,我们就要开始借来预训练语言模型,并且进行微调了。语言模型本文使用 fast.ai 自带的预训练语言模型 wt103_v1,它是在 Wikitext-103 数据集上训练的结果。我们把它下载下来:model_path = path/'models'model_path.mkdir(exist_ok=True)url = 'http://files.fast.ai/models/wt103_v1/'download_url(f'{url}lstm_wt103.pth', model_path/'lstm_wt103.pth')download_url(f'{url}itos_wt103.pkl', model_path/'itos_wt103.pkl')左侧边栏里,在数据目录下,我们会看到一个新的文件夹,叫做 models 。其中包括两个文件:好了,现在数据、语言模型预训练参数都有了,我们要构建一个 RNNLearner ,来生成我们自己的语言模型。learn = RNNLearner.language_model(data_lm, pretrained_fnames=['lstm_wt103', 'itos_wt103'], drop_mult=0.5)这里,我们指定了语言模型要读入的文本数据为 data_lm,预训练的参数为刚刚下载的两个文件,第三个参数 drop_mult 是为了避免过拟合,而设置的 Dropout 比例。下面,我们还是让模型用 one cycle policy 进行训练。如果你对细节感兴趣,可以点击这个链接了解具体内容。learn.fit_one_cycle(1, 1e-2)因为我们的数据集包含数十万条目,因此训练时间,大概需要1个小时左右。请保持耐心。50多分钟后,还在跑,不过已经可以窥见曙光了。当命令成功执行后,我们可以看看目前的语言模型和我们的训练数据拟合程度如何。你可能会觉得,这个准确率也太低了!没错,不过要注意,这可是语言模型的准确率,并非是分类模型的准确率。所以,它和我们之前在这张表格里看到的结果,不具备可比性。我们对于这个结果,不够满意,怎么办呢?方法很简单,我们微调它。回顾下图,刚才我们实际上是冻结了预训练模型底层参数,只用头部层次拟合我们自己的训练数据。微调的办法,是不再对预训练的模型参数进行冻结。“解冻”之后,我们依然使用“歧视性学习速率”(discriminative learning rate)进行微调。如果你忘了“歧视性学习速率”(discriminative learning rate)是怎么回事儿,请参考《如何用 Python 和 fast.ai 做图像深度迁移学习?》一文的“微调”一节。注意这种方法,既保证靠近输入层的预训练模型结构不被破坏,又尽量让靠近输出层的预训练模型参数尽可能向着我们自己的训练数据拟合。learn.unfreeze()learn.fit_one_cycle(1, 1e-3)好吧,又是一个多小时。出去健健身,活动一下吧。当你准时回来的时候,会发现模型的效能已经提升了一大截。前前后后,你已经投入了若干小时的训练时间,就为了打造这个符合任务需求的语言模型。现在模型训练好了,我们一定不能忘记做的工作,是把参数好好保存下来。learn.save_encoder('ft_enc')这样,下次如果你需要使用这个任务的语言模型,就不必拿 wt103_v1 从头微调了。而只需要读入目前存储的参数即可。分类语言模型微调好了,下面我们来构造分类器。learn = RNNLearner.classifier(data_clas, drop_mult=0.5)learn.load_encoder('ft_enc')learn.fit_one_cycle(1, 1e-2)虽然名称依然叫做 learn ,但注意这时候我们的模型,已经是分类模型,而不再是语言模型了。我们读入的数据,也因应变化成了 data_clas ,而非 data_lm 。这里,load_encoder 就是把我们的语言模型参数,套用到分类模型里。我们还是执行 "one cycle policy" 。这次,在20多分钟的训练之后,我们语言模型在分类任务上得出了第一次成绩。接近95%的准确率,好像很不错嘛!但是,正如我在《文科生用机器学习做论文,该写些什么?》一文中给你指出的那样,对于别人已经做了模型的分类任务,你的目标就得是和别人的结果去对比了。回顾别人的结果:对,最高准确率是 95.64% ,我们的模型,还是有差距的。怎么办?很简单,我们刚刚只是微调了语言模型而已。这回,我们要微调分类模型。先做一个省事儿的。就是对于大部分层次,我们都保持冻结。只把分类模型的最后两层解冻,进行微调。learn.freeze_to(-2)learn.fit_one_cycle(1, slice(5e-3/2., 5e-3))半小时以后,我们获得了这样的结果:这次,我们的准确率,已经接近了97% ,比别人的 95.64% 要高了。而且,请注意,此时训练损失(train loss)比起验证损失(valid loss)要高。没有迹象表明过拟合发生,这意味着模型还有改进的余地。你如果还不满意,那么咱们就干脆把整个儿模型解冻,然后再来一次微调。learn.unfreeze()learn.fit_one_cycle(1, slice(2e-3/100, 2e-3))因为微调的层次多了,参数自然也多了许多。因此训练花费时间也会更长。大概一个小时以后,你会看到结果:准确率已经跃升到了 97.28%。再次提醒,此时训练损失(train loss)依然比验证损失(valid loss)高。模型还有改进的余地……对比虽然我们的深度学习模型,实现起来非常简单。但是把咱们2018年做出来的结果,跟2015年的文章对比,似乎有些不大公平。于是,我在 Google Scholar 中,检索 yelp polarity ,并且把检索结果的年份限定在了2017年以后。对第一屏上出现的全部文献,我一一打开,查找是否包含准确率对比的列表。所有符合的结果,我都列在了下面,作为对比。下表来自于:Sun, J., Ma, X., & Chung, T. S. (2018). Exploration of Recurrent Unit in Hierarchical Attention Neural Network for Sentence Classification. 한국정보과학회 학술발표논문집, 964-966.注意这里最高的数值,是 93.75 。下表来自于:Murdoch, W. J., & Szlam, A. (2017). Automatic rule extraction from long short term memory networks. arXiv preprint arXiv:1702.02540.这里最高的数值,是 95.4 。下表来自于:Chen, M., & Gimpel, K. (2018). Smaller Text Classifiers with Discriminative Cluster Embeddings. In Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 2 (Short Papers) (Vol. 2, pp. 739-745).这里最高的数值,是 95.8 。下表来自于:Shen, D., Wang, G., Wang, W., Min, M. R., Su, Q., Zhang, Y., … & Carin, L. (2018). Baseline needs more love: On simple word-embedding-based models and associated pooling mechanisms. arXiv preprint arXiv:1805.09843.这里最高的数值,是 95.81 。这是一篇教程,并非学术论文。所以我没有穷尽查找目前出现的最高 Yelp Reviews Polarity 分类结果。另外,给你留个思考题——咱们这种对比,是否科学?欢迎你在留言区,把自己的见解反馈给我。不过,通过跟这些近期文献里面的最优分类结果进行比较,相信你对咱们目前达到的准确率,能有较为客观的参照。小结本文我们尝试把迁移学习,从图像分类领域搬到到了文本分类(自然语言处理)领域。在 fast.ai 框架下,我们的深度学习分类模型代码很简单。刨去那些预处理和展示数据的部分,实际的训练语句,只有10几行而已。回顾一下,主要的步骤包括:获得标注数据,分好训练集和验证集;载入语言模型数据,和分类模型数据,进行标记化和数字化预处理;读入预训练参数,训练并且微调语言模型;用语言模型调整后的参数,训练分类模型;微调分类模型值得深思的是,在这种流程下,你根本不需要获得大量的标注数据,就可以达到非常高的准确率。在 Jeremy Howard 的论文里,就有这样一张对比图,令人印象非常深刻。同样要达到 20% 左右的验证集错误率,从头训练的话,你需要超过1000个数据,而如果使用半监督通用语言模型微调(ULMFiT, semi-supervised),你只需要100个数据。如果你用的是监督通用语言模型微调(ULMFiT, supervised),100个数据已经能够直接让你达到10%的验证集错误率了。这给那些小样本任务,尤其是小语种上的自然语言处理任务,带来了显著的机遇。Czapla 等人,就利用这种方法,轻松赢得了 PolEval'18 比赛的第一名,领先第二名 35% 左右。感兴趣的话,他们的论文在这里。Google 给你的300美金,应该还剩余一些吧?找个自己感兴趣的文本分类任务,实际动手跑一遍吧。转自:https://mp.weixin.qq.com/s?__biz=MzIyODI1MzYyNA==&mid=2653540491&idx=1&sn=46d7d9c998925dbc6e58de225efb624b&chksm=f389ba5cc4fe334a0406bc59126cdac66efca21c7c143662ffc3e23e8f88dcd970388137b940&cur_album_id=1339178811027587075&scene=189#wechat_redirect
  • [技术干货] 如何用 Python 和 fast.ai 做图像深度迁移学习【转】
     本文带你认识一个优秀的新深度学习框架,了解深度学习中最重要的3件事。框架看到这个题目,你可能会疑惑:老师,你不是讲过如何用深度学习做图像分类了吗?迁移学习好像也讲过了啊!说得对!我要感谢你对我专栏的持续关注。我确实讲过深度学习做图像分类,以及迁移学习这两项内容。写这篇文章,是因为最近因为科研的关系,发现了 fast.ai 这款框架。我希望把它介绍给你。你可能会不解,之前介绍过的 TuriCreate, Tensorflow, tflearn 和 Keras 好像都挺好用的啊!我想问问,你在实际的科研工作里,用过哪一个呢?大多数的读者,只怕基本上都没真正用它们跑过实际的任务。为什么呢?因为对普通用户(例如我经常提到的“文科生”),这些框架要么用起来很简单,但是功能不够强大;要么功能很强大,但是不够易用。例如苹果的 TuriCreate ,我给你演示过,直接零基础上手都没问题。但当你希望对模型进行构造调整的时候,马上就会发现困难重重。因为其专长在于快速产生模型,并且部署到苹果移动设备,因此文档里面底层细节的介绍是有欠缺的。而且有些模型,非苹果平台目前还不能兼容。至于某著名框架,直到推出3年后,在各方压力下,不得已才把好用的 Eager Execution 作为主要使用模式。其间充分体现了那种技术人员独有的傲慢和固执。另外,就连程序员和数据科学家们都把吐槽“看不懂”它的官方文档当作了家常便饭。这些轶事,由于公开发布会招致口水仗,所以我只写在了知识星球专属语雀团队《发现了一套非常棒的(该框架名称)视频教程》一文中。感兴趣的话,不妨去看看。原本我认为, Keras 已经是把功能和易用性做到了最佳平衡了。直到我看到了 Jeremy Howard,也就是 fast.ai 创始人提出的评判标准——如果一个深度学习框架需要写个教程给你,那它的易用性还不够好。我看了之后,可以用感动来形容。Jeremy 说这话,不是为了夸自己——因为他甚至做了个 MOOC 出来。他自己评价,说目前 fast.ai 的易用性依然不算成功。但在我看来, fast.ai 是目前把易用性和功能都做到了极致的深度学习框架。它的门槛极低。如同 TuriCreate 一样,你可以很轻易用几句话写个图片分类模型出来,人人都能立即上手。它的天花板又很高。因为它只是个包裹了 Pytorch 的代码库。你可能也听说了,在过去的一年里,Pytorch 在学术界大放异彩,就是因为它的门槛对于科研人员来说,已经足够友好了。如果你有需求,可以非常方便地通过代码的修改和复用,敏捷构造自己的深度学习模型。这种积木式的组合方式,使得许多新论文中的模型,可以第一时间被复现验证。如果你在这个过程中有了自己的灵感和心得,可以马上实践。且慢,fast.ai 的作者不是已经做了自己的 MOOC 了吗?那写这篇文章,岂不是多此一举?不是的。首先,作者每年迭代一个 MOOC 的版本,因为 MOOC 一共包括三门课程,分别是:Practical Deep Learning for CodersCutting Edge Deep Learning for CodersIntroduction to Machine Learning for Coders但现在你能看到的深度学习基础课,还是去年录的。今年10月,伴随着 Pytorch 1.0 的推出, fast.ai 做了一次显著的大版本(1.0)更新。如果你去看去年的课程,会发现和目前的 fast.ai 代码有很多区别。在完成同一个功能时,你愿意再跑去学旧的过时内容吗?特别是,如果搞混了,还很容易出错。可是,想看到这个版本课程的免费视频,你至少得等到明年1月。因为目前正式学员们也才刚刚开课。而且,那视频,也是英文的。正因如此,我觉得有必要给你讲讲,如何用最新的 fast.ai 1.0 版本,来完成图像深度迁移学习。数据Jeremy 在 MOOC 中提到,如果你打算让机器通过数据来学习,你需要提供3样东西给它,分别是:数据(Data)模型结构(Architecture)损失度量(Loss Metrics)模型结构,是根据你的具体问题走的。例如说,你需要让机器做图片分类,那么就需要使用卷积神经网络(Convolutional Neural Network)来表征图片上的像素信息构成的特征。如果你需要做自然语言处理,那么就可以使用循环神经网络(Recurrent Neural Network)来捕捉文本或者字符的顺序关联信息。损失衡量,是指你提供一个标准,衡量机器对某项任务的处理水平。例如说对于分类效果如何,你可以使用交叉熵(Binary Cross Entropy)来评判。这样,机器会尝试最小化损失结果,从而让分类表现越来越好。至于数据,因为我们这里的任务是做分类。因此需要有标注的训练数据。我已经把本文需要用到的数据放到了这个 github 项目上。打开其中的 imgs 文件夹,你会看见3个子文件夹,分别对应训练(train),验证(valid)和测试(test)。打开 train 文件夹看看。你没猜错,我们用的图片还是哆啦A梦(doraemon)和瓦力(walle)。因为这样不仅可以保持教程的一惯性,而且也可以保证结果对比的公平。打开哆啦A梦的目录看看:展示其中第一个文件内容。好熟悉,是不是?你可以浏览一下其他的哆啦A梦照片,然后别忘了去瓦力的文件夹里面扫上一眼。这就是我们的数据集了。环境为了运行深度学习代码,你需要一个 GPU 。但是你不需要去买一个,租就好了。最方便的租用方法,就是云平台。fast.ai 官方,给出了以下5种云计算平台使用选项:Paperspace GradientSalamanderSageMakerGoogle Compute PlatformAmazon Web Services EC2其中,我推荐你使用的,是 Google Compute Platform 。原因很简单,首先它成本低,每小时只需要 0.38 美元。更重要的是,如果你是新用户, Google 会先送给你300美金,1年内有效。算算看,这够你运行多久深度学习?原先,fast.ai 上面的设置 Google Compute Platform 教程写得很简略。于是我写了个一步步的教程,请使用这个链接访问。不过,我发现 fast.ai 的迭代速度简直惊人,短短几天时间,新的教程就出来了,而且详尽许多。因此你也可以点击这里查看官方的教程。其中如果有跳步,你可以回看我的教程,作为补充。因此,Google Compute Platform 中间步骤,咱们就不赘述了。当你的终端里面出现这样的提示的时候,就证明一切准备工作都就绪了。下面,你需要下载刚刚在 github 上面的代码和数据集。git clone https://github.com/wshuyi/demo-image-classification-fastai.git之后,就可以呼叫 jupyter 出场了。jupyter lab注意因为你是在 Google Compute Platform 云端执行 jupyter ,因此浏览器不会自动弹出。你需要打开 Firefox 或者 Chrome,在其中输入这个链接(http://localhost:8080/lab?)。打开左侧边栏里面的 demo.ipynb。本教程全部的代码都在这里了。当然,你如果比较心急,可以选择执行Run->Run All Cells,查看全部运行结果。但是,跟之前一样,我还是建议你跟着教程的说明,一步步执行它们。以便更加深刻体会每一条语句的含义。载入我们先要载入数据。第一步是从 fast.ai 读入一些相关的功能模块。from fastai import *from fastai.vision import *from fastai.core import *接着,我们需要设置数据所在文件夹的位置,为 imgs 目录。执行:path = Path('imgs')下面,我们让 fast.ai 帮我们载入全部的数据。这时我们调用 ImageDataBunch 类的 from_folder 函数,结果存储到 data 中:data = ImageDataBunch.from_folder(path, test='test', ds_tfms=get_transforms(), size=224)注意这里,我们不仅读入了数据,还顺手做了2件事:我们进行了数据增强(augmentation),也就是对数据进行了翻转、拉伸、旋转,弄出了很多“新”训练数据。这样做的目的,是因为数据越多,越不容易出现过拟合(over-fitting),也就是模型死记硬背,蒙混考试,却没有抓住真正的规律。我们把图片大小进行了统一,设置成了 224 x 224 ,这样做的原因,是我们需要使用迁移学习,要用到预训练模型。预训练模型是在这样大小的图片上面训练出来的,因此保持大小一致,效果更好。下面,检查一下数据载入是否正常:data.show_batch(rows=3, figsize=(10,10))没问题。图片和标记都是正确的。训练用下面这一条语句,我们把“数据”、“模型结构”和“损失度量”三样信息,一起喂给机器。learn = ConvLearner(data, models.resnet34, metrics=accuracy)数据就不说了,模型我们采用的是 resnet34 这样一个预训练模型作为基础架构。至于损失度量,我们用的是准确率(accuracy)。你可能会纳闷,这就完了?不对呀!没有告诉模型类别有几个啊,没有指定任务迁移之后接续的几个层次的数量、大小、激活函数……对,不需要。因为 fast.ai 根据你输入的上述“数据”、“模型结构”和“损失度量”信息,自动帮你把这些闲七杂八的事情默默搞定了。下面,你需要用一条指令来训练它:learn.fit_one_cycle(1)注意,这里我们要求 fast.ai 使用 one cycle policy 。如果你对细节感兴趣,可以点击这个链接了解具体内容。5秒钟之后,训练结束。验证集准确率是,100%。注意,你“拿来”的这个 resnet34 模型当初做训练的时候,可从来没有见识过哆啦A梦或者瓦力。看了100多张形态各异,包含各种背景噪声的图片,它居然就能 100% 准确分辨了。之前我们讲过机器学习的可解释性很重要。没错,fast.ai 也帮我们考虑到了这点。preds,y = learn.get_preds()interp = ClassificationInterpretation(data, preds, y, loss_class=nn.CrossEntropyLoss)执行上面这两行语句,不会有什么输出。但是你手里有了个解释工具。我们来看看,机器判断得最不好的9张图片都有哪些?interp.plot_top_losses(9, figsize=(10,10))因为准确率已经 100% 了,所以单看数值,你根本无法了解机器判断不同照片的时候,遇到了哪些问题。但是这个解释器却可以立即让你明白,哪些图片,机器处理起来,底气(信心)最为不足。我们还能让解释器做个混淆矩阵出来:interp.plot_confusion_matrix()不过这个混淆矩阵好像没有什么意思。反正全都判断对了。评估我们的模型,是不是已经完美了?不好说。因为我们刚才展示的,只是验证集的结果。这个验证集,机器在迭代模型参数的时候每一回都拿来尝试。所以要检验最为真实的效能,我们需要让机器看从来没有看到过的图片。你可以到 test 目录下面,看看都有什么。注意这里一共6张图片,3张哆啦A梦的,3张瓦力的。这次,我们还会使用刚才用过的 get_preds 函数。不过区别是,我们把 is_test 标记设置为 True,这样机器就不会再去验证集里面取数据了,而是看测试集的。preds,y = learn.get_preds(is_test=True)注意目录下面看到的文件顺序,是依据名称排列的。但是 fast.ai 读取数据的时候,其实是做了随机洗牌(randomized shuffling)。我们得看看实际测试集里面的文件顺序。data.test_dl.dl.dataset.ds.x好了,我们自己心里有数了。下面就看看机器能不能都判断正确了。preds这都啥玩意儿啊?别着急,这是模型预测时候,根据两个不同的分类,分别给出的倾向数值。数值越大,倾向程度越高。左侧一列,是哆啦A梦;右侧一列,是瓦力。我们用 np.argmax 函数,把它简化一些。np.argmax(preds, axis=1)这样一来,看着就清爽多了。我们来检查一下啊:瓦力,瓦力,哆啦A梦,哆啦A梦,哆啦A梦,哆啦A梦……不对呀!最后这一张,walle.113.jpg,不应该判断成瓦力吗?打开看看。哦,难怪。另一个机器人也出现在图片中,圆头圆脑的,确实跟哆啦A梦有相似之处。要不,就这样了?微调那哪儿行?!我们做任务,要讲究精益求精啊。遇到错误不要紧,我们尝试改进模型。用的方法,叫做微调(fine-tuning)。我们刚刚,不过是移花接木,用了 resnet34 的身体,换上了一个我们自定义的头部层次,用来做哆啦A梦和瓦力的分辨。这个训练结果,其实已经很好了。但是既然锁定了“身体”部分的全部参数,只训练头部,依然会遇到判断失误。那我们自然想到的,就应该是连同“身体”,一起调整训练了。但是这谈何容易?你调整得动作轻微,那么效果不会明显;如果你调整过了劲儿,“身体”部分的预训练模型通过海量数据积累的参数经验,就会被破坏掉。两难啊,两难!好在,聪明的研究者提出了一个巧妙的解决之道。这非常符合我们不只一次提及的“第一性原理”,那就是返回到事情的本源,问出一句:谁说调整的速度,要全模型都一致?!深度卷积神经网络,是一个典型的层次模型。模型靠近输入的地方,捕获的是底层的特征。例如边缘形状等。模型靠近输出的地方,捕获的是高层特征,例如某种物体的形貌。对于底层特征,我们相信哆啦A梦、瓦力和原先训练的那些自然界事物,有很多相似之处,因此应该少调整。反之,原先模型用于捕获猫、狗、兔子的那些特征部分,我们是用不上的,因此越靠近输出位置的层次,我们就应该多调整。这种不同力度的调整,是通过学习速率(learning rate)来达成的。具体到我们的这种区分,专用名词叫做“歧视性学习速率”(discriminative learning rate)。你可能想放弃了,这么难!我不玩儿了!且慢,看看 fast.ai 怎么实现“歧视性学习速率”。learn.unfreeze()learn.fit_one_cycle(3, slice(1e-5,3e-4))对,只需在这里指定一下,底层和上层,选择什么不同的起始速率。搞定。没错,就是这么不讲道理地智能化。这次,训练了3个循环(cycle)。注意,虽然准确率没有变化(一直是100%,也不可能提升了),但是损失数值,不论是训练集,还是验证集上的,都在减小。这证明模型在努力地学东西。你可能会担心:这样会不会导致过拟合啊?看看就知道了,训练集上的损失数值,一直高于验证集,这就意味着,没有过拟合发生的征兆。好了,拿着这个微调优化过后的模型,我们再来试试测试集吧。首先我们强迫症似地看看测试集文件顺序有没有变化:data.test_dl.dl.dataset.ds.x既然没有变,我们就放心了。下面我们执行预测:preds,y = learn.get_preds(is_test=True)然后,观察结果:np.argmax(preds, axis=1)如你所见,这次全部判断正确。可见,我们的微调,是真实有用的。小结本文为你介绍了如何用 fast.ai 1.0 框架进行图像深度迁移学习。可以看到, fast.ai 不仅简洁、功能强大,而且足够智能化。所有可以帮用户做的事情,它全都替你代劳。作为研究者,你只需要关注“数据”、“模型结构”和“损失度量”这3个关键问题,以改进学习效果。我希望你不要满足于把代码跑下来。用你获得的300美金,换上自己的数据跑一跑,看看能否获得足够满意的结果。转自 https://mp.weixin.qq.com/s?__biz=MzIyODI1MzYyNA==&mid=2653540487&idx=1&sn=34704d1611631ebd3d421f5e831941c7&chksm=f389ba50c4fe33460875f65e6cdcc5339bc532290e0f686b2c8d4b2f9af5f38bb73082199f38&scene=21#wechat_redirect 
总条数:54 到第
上滑加载中