首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

深度丨AI 从业者该如何选择深度学习开源框架(6000字长文)

编者按:本文内容来自微软美国总部机器学习科学家彭河森博士在雷锋网硬创公开课的分享。 正如程序语言一样,深度学习开源框架同样各有优劣和适用的场景,那么 AI 从业者该如何有针对性地选择这些平台来玩转深度学习? 这期的公开课特邀了先后在谷歌、亚马逊、微软供职的机器学习科学家彭河森博士为大家讲述《MXNet火了,AI从业者该如何选择深度学习开源框架》。彭河森博士亲眼见证并深入参与了这三家巨头布局深度学习的这一过程。 嘉宾介绍 彭河森,埃默里大学统计学博士。现担任微软美国总部的机器学习科学家、微软必应广告部应用资深

06

1.1 ASM-简介-目的

上面所述的技术可以应用于任何编程语言,只不过在实现上的难易程度取决于编程语言。 对于Java在这种情况下,可以在源码或者字节码中应用。 如果在字节码中应用,显而易见的一个优点是,你不需要源文件。 因此可以在任何应用中都可以使用代码转换,包括闭源代码和商业代码。 另一个好处是,你可以对编译后的字节码做分析、生成新的字节码或者转换字节码, 只需要它们在Java虚拟机(在运行时生成和编译源代码是可以的,但是非常耗时,而且需要一个完成的Java编译环境支持)载入代码之前完成即可。 还有一个好处是工具包,例如stub编译器或者切面植入器,对用户来说是透明的。 由于程序分析、代码生成和代码转换有很多种技术可以实现,所以有很多相应的工具也被发明了出来。 ASM[1]就是一款针对Java的工具,它被设计成可以在运行时使用,同样也可以在离线状态下使用,对class进行生成和转换。 ASM库对编译后的class进行工作,它设计的速度快、内存消耗小。 速度越快越重要,在动态代理class的生成和class的转换时,尽可能确保运行中的应用不会被ASM拖慢, 同时内存消耗越小越好,避免因为环境限制,对本身消耗内存就小的应用来说,产生内存膨胀。 ASM不是唯一针对Java字节码生成和转换的工具库,但是它是全新且效率最高的。 可以在http://asm.objectweb.org中下载依赖库。

02

那些游戏外挂作者的技术与一般程序员比,谁更厉害?

游戏外挂和程序员相比有相通之处,也有极大的不同,游戏外挂属于游戏逆向,逆向类别的东西不确定性很强,不同游戏采用的外挂辅助也不一定相同,游戏辅助从类型上一般分为以下几种方式,模拟按键,截图修改网路数据,修改本地内存数值等,不同游戏破解方式又不太一样,很多就拿按键的来说有的游戏场景相对比较简单直接用按键精灵就能搞定一些常见的游戏做任务关卡。还有一种常见做法直接截取游戏框架中解析按键,然后在一些特殊的键值处理上做一些逻辑处理,如果只是用工具搞的话技术含量很少,通过hook函数直接获取系统的按键处理函数直接进行数据处理。

03

如何学好一门语言

编程,对于大多数的人来说,都是一个比较不容易事情,为什么呢?因为还没有接触就听到很人说编程很难,就放弃了,那么编程真的有那么难吗?我们如果真的想要学习编程, 那么如何学好编程呢?下面是我总结的几点如下: 找准自己的出发点 要想学好编程,最主要的是找准自己的出发点,你打算用这个编程语言干什么,现在的编程语言有那么多,有简单的,有困难的,每个编程语言所擅长的领域各不相同,如果你打算在办公领域深耕,通过学习编程提升自己的工作效率,我则建议你学习python,这两个编程语言对于办公的帮助很大,如果你打算做运维或者开发发,那么C语言或者JAVA则是你的首选,而且难易各不相同,找准自己的出发点,选择适合自己的编程语言,是你学好编程的第一步。 学以致用 学习的方法有很多种,有人会选择买本相应书籍,自己仔细钻研,有些人会选择买一些课程来学习,这些方法都是没有问题的,但是学习并不是看一遍视频,看一遍书籍就算是学好,学会的,还需要多练,学以致用,比方说你学习python,你就可以将所学运用到工作场景中,从工作实际场景出发,一边学习一边复习,这样才可以温故而知新,让自己的所学为自己所用,不断学习不断练习,形成一个循环的过程,你才可以在编程这个领域不断深耕,不断学习。 坚持 学习从来都不是一件简单的事情,尤其是学习编程,因为编程更加考验头脑的思维能力,对于动手能力和实操能力要求非常的高,而且方法并不是唯一,也不是固定的,需要不断的思考,一些问题点,绕不过去,你甚至没有办法去执行下一步,所以整个过程也是非常的枯燥无味的,很多人都是因为没有办法坚持,而最终放弃,三分热度一事无成。 不管是编程还是其他学习都离不开上述三点,并不是成功的唯一方法,但一定是成功的保证,没有了上面的三点,你很难在编程的道路上走得更远,尤其最主要一点,坚持,一定要坚持,坚持,还有自信心

05

对比java和python

对比java和python    1.难易度而言。python远远简单于java。   2.开发速度。Python远优于java   3.运行速度。java远优于标准python,pypy和cython可以追赶java,但是两者都没有成熟到可以做项目的程度。   4.可用资源。java一抓一大把,python很少很少,尤其是中文资源。   5.稳定程度。python3和2不兼容,造成了一定程度上的混乱以及大批类库失效。java由于有企业在背后支持所以稳定的多。   6.是否开源。python从开始就是完全开源的。Java由sun开发,但现在有GUN的Openjdk可用,所以不用担心。   7.编译还是解释。两者都是解释型。   我理解,C好比手动挡车(编译型语言),java和python(解释型语言)好比自动档车。跑的最快的车都是手动档,但是对开不好的人来说,开自动档反而更快些。   Kno有一篇文章谈到选择编程语言,“先确定你的需求”,不要由语言的简单还是复杂去觉定。只有能够编写你真正认为有用的程式,才能获得满足感,学习才能继续。   那么java和python分别适用于什么样的环境呢。由sourceforge.net可以看出:   最著名,久经考验的普通应用程序,基本都是c++写的。例如emule,7-zip,WinSCP,FileZilla等等等。   一部分由java开发,例如最有名的OpenOffice。   python写的很少,如Pidgin,FireBird。   开发语言(有多少个程式由此语言开发)的排行如下:   # Java46,202   # C++36,895   # PHP30,048   # C28,075   # C#13,476   # Python13,379   # JavaScript11,285   # Perl9,216   # Unix Shell3,869   # Delphi/Kylix3,548   # Visual Basic3,186   # Visual Basic .NET   很多框架和类库也和应用软件一样在这个列表里,因此比较公平。   由此可以看出,java不管在GNU还是商业领域都是应用最广的语言。C主要用于构建系统底层。c++和java用于构建中间应用层。如果资源足够,那么会选择c++开发,以求运行速度,否则会用java开发,以求开发速度。python在各方面都比java优秀,可谓次世代语言。可最受争议的是它的速度,纯python比java慢很多,以及背后没有商业支持,稳定性备受诟病。目前为止,python在商业层次上,主要作为一种胶水语言,粘合其他语言(主要是c/c++)的类库。在GNU领域,主要局限于小规模的应用和个人化应用。以及逆向工程(黑客)应用。   为什么java在服务器端被大量应用,在客户端用的却比较少呢。难道服务器端用到的计算量反而少么。我认为这说明对比c++,java的速度还是可以接受的。无法被接受的是JRE平台,以及JRE平台启动时卡的那一会儿。我就曾经为此认为java写就的程式性能低下。   python用户常常拿来说嘴的一点是:python并不慢,因为python运行时调用了大量c库,而c是很快的。反过来想想,这正反映了其胶水语言的事实,任何一种语言都可以调用c库,这么比较有价值么?假如一个库完全由python,那么它的运行效率...不说也罢。编程不能总是用别人的库啊。

04

连线 4 个小时后,我从 CTO 脑子里“偷走的” 18 个认知 | Q推荐

有些同学天生就技术能力强,有些同学天生有业务思维,有些同学天生就有领导力,这些特质都是存在的。这类同学往往会在晋升的某个或某几个阶段走得非常顺畅,我们必须承认这一点。 但没有特别天赋的程序员,在这个高度内卷的时代就只能躺平吗?我也不这么认为。所以我在 InfoQ 视频号约了四位 CTO 级别的嘉宾,连线畅聊,全程四个小时,希望能得到一些技术人成长的高阶认知和方法。 以下是我的具体收获: 1、优秀的同学一般有三个共同点:(1)逻辑思维优秀;(2)能长期保持好奇心,对技术问题喜欢追根究底;(3)不会轻易地投入

02
领券