做一个和游戏cdk一样王者荣耀cdk格式不对的数据库进行测试有么有可能测试出来

如果题主没有什么编程的基础,我推荐你到这个网站:&br&&a href=&///?target=https%3A//cs50.harvard.edu/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&This is CS50.&i class=&icon-external&&&/i&&/a&&br&这是哈佛大学的公开课《计算机科学导论》的主页,网页内容每年都会更新,现在是2014年秋季的课程内容。上面有授课老师提供的lecture notes, problem sheet, quiz,以及最重要的是附带字幕的最新课堂录像。&br&&img src=&/bc83fef96b5ef9f099d9fb86f5f22086_b.jpg& data-rawwidth=&1286& data-rawheight=&681& class=&origin_image zh-lightbox-thumb& width=&1286& data-original=&/bc83fef96b5ef9f099d9fb86f5f22086_r.jpg&&&br&这个课程是用c语言来讲解的,来上课的学生也是大概一半人没接触过编程。看完这一系列视频,相信题主会对编程的方法论、计算机的一些基础知识,以及c语言都有很好的理解。&br&另外,真的要赞叹这个课的老师相当用心,课堂氛围也非常活跃,相信你会感兴趣的。&br&&br&下面是我看课堂视频时的一些截图:&br&&br&&img src=&/8418ed80ccbe4ac15b9e9d0efe80dc06_b.jpg& data-rawwidth=&1304& data-rawheight=&685& class=&origin_image zh-lightbox-thumb& width=&1304& data-original=&/8418ed80ccbe4ac15b9e9d0efe80dc06_r.jpg&&左边是老师在讲课,右边是PPT内容。&br&&br&&img src=&/c7c6c7d5dbd88c7bc14bd2_b.jpg& data-rawwidth=&1306& data-rawheight=&683& class=&origin_image zh-lightbox-thumb& width=&1306& data-original=&/c7c6c7d5dbd88c7bc14bd2_r.jpg&&如果觉得PPT字太小,也可以把左右调换一下。&br&&br&&img src=&/2f968ee0485_b.jpg& data-rawwidth=&1304& data-rawheight=&766& class=&origin_image zh-lightbox-thumb& width=&1304& data-original=&/2f968ee0485_r.jpg&&全屏也是可以的,而且老师讲课的场景会缩小到右上方。与上两张截图不同的是,这次有字幕(只需要点击右下角的“cc”)。
如果题主没有什么编程的基础,我推荐你到这个网站:
这是哈佛大学的公开课《计算机科学导论》的主页,网页内容每年都会更新,现在是2014年秋季的课程内容。上面有授课老师提供的lecture notes, problem sheet, quiz,以及最重要的是附带字幕…
&img src=&/v2-8fd9d07d7_b.png& data-rawwidth=&1240& data-rawheight=&783& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&/v2-8fd9d07d7_r.png&&&p&坐标系在GIS学习中是一个非常晦涩而又绕不开的概念,如何清晰明了地介绍不同坐标系对数据造成的影像呢?或许下面这个好玩的网站会给你些启发。&/p&&p&&a href=&/?target=http%3A///%23%21/home& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/#&/span&&span class=&invisible&&!/home&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&img src=&/v2-bbba55a5ce9a_b.png& data-rawwidth=&2554& data-rawheight=&1196& class=&origin_image zh-lightbox-thumb& width=&2554& data-original=&/v2-bbba55a5ce9a_r.png&&&p&通过选择不同的投影方式,实时展示投影变换效果。&/p&&img src=&/v2-6c9ac0cd6adbf_b.png& data-rawwidth=&474& data-rawheight=&639& class=&origin_image zh-lightbox-thumb& width=&474& data-original=&/v2-6c9ac0cd6adbf_r.png&&&p&&br&&/p&&img src=&/v2-c0ba017ebd530b543f454ecd7e3004f8_b.png& data-rawwidth=&1110& data-rawheight=&716& class=&origin_image zh-lightbox-thumb& width=&1110& data-original=&/v2-c0ba017ebd530b543f454ecd7e3004f8_r.png&&&p&&br&&/p&&img src=&/v2-8fd9d07d7_b.png& data-rawwidth=&1240& data-rawheight=&783& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&/v2-8fd9d07d7_r.png&&&p&&br&&/p&&img src=&/v2-e7e23e46bba360beef81a_b.png& data-rawwidth=&1563& data-rawheight=&702& class=&origin_image zh-lightbox-thumb& width=&1563& data-original=&/v2-e7e23e46bba360beef81a_r.png&&&p&&br&&/p&&img src=&/v2-bc763bfee5_b.png& data-rawwidth=&1087& data-rawheight=&721& class=&origin_image zh-lightbox-thumb& width=&1087& data-original=&/v2-bc763bfee5_r.png&&&p&&br&&/p&&img src=&/v2-558bf8ac5e206bda3152f0_b.png& data-rawwidth=&1094& data-rawheight=&702& class=&origin_image zh-lightbox-thumb& width=&1094& data-original=&/v2-558bf8ac5e206bda3152f0_r.png&&&p&可以拖动不同的参数调整中心点位置。&/p&&p&&br&&/p&&img src=&/v2-1b4b7d1aea42a4adfe83c64d_b.png& data-rawwidth=&484& data-rawheight=&461& class=&origin_image zh-lightbox-thumb& width=&484& data-original=&/v2-1b4b7d1aea42a4adfe83c64d_r.png&&&p&可以勾选不同的图层显示&/p&&img src=&/v2-cb55b5c5c2e83a108c6ee32bf9f21276_b.png& data-rawwidth=&485& data-rawheight=&446& class=&origin_image zh-lightbox-thumb& width=&485& data-original=&/v2-cb55b5c5c2e83a108c6ee32bf9f21276_r.png&&&p&&br&&/p&&p&还可以调整修改图层的颜色。&/p&&p&&br&&/p&&img src=&/v2-2e3e5dbeb95462dcb771ca0a94d389fd_b.png& data-rawwidth=&485& data-rawheight=&607& class=&origin_image zh-lightbox-thumb& width=&485& data-original=&/v2-2e3e5dbeb95462dcb771ca0a94d389fd_r.png&&&p&&br&&/p&&p&你可以发挥创造力,设计各种地图样式&/p&&p&&br&&/p&&img src=&/v2-2ba619ee06d8e_b.png& data-rawwidth=&1382& data-rawheight=&900& class=&origin_image zh-lightbox-thumb& width=&1382& data-original=&/v2-2ba619ee06d8e_r.png&&&p&最后可以下载为png图片或者分享到各社交网站上。&/p&&p&&br&&/p&&img src=&/v2-1c6ccbe8d093afb13e027_b.png& data-rawwidth=&487& data-rawheight=&256& class=&origin_image zh-lightbox-thumb& width=&487& data-original=&/v2-1c6ccbe8d093afb13e027_r.png&&&p&知识星球【GISer入门】&/p&&p&微信公众号:【GISer学习团】&/p&
坐标系在GIS学习中是一个非常晦涩而又绕不开的概念,如何清晰明了地介绍不同坐标系对数据造成的影像呢?或许下面这个好玩的网站会给你些启发。 通过选择不同的投影方式,实时展示投影变换效果。 可以拖动不同的参数调整中心点位置。 可…
&img src=&/v2-a6e6f09cddbc08d76d5c_b.jpg& data-rawwidth=&1400& data-rawheight=&865& class=&origin_image zh-lightbox-thumb& width=&1400& data-original=&/v2-a6e6f09cddbc08d76d5c_r.jpg&&&p&文 |
Sun小Lei&/p&&p&&br&&/p&&p&中国市场早已是全世界企业眼中的一块肥肉,许多外国公司都期望着能够尽快打开中国市场,Facebook 也不例外。&/p&&p&尽管已经拥有 20 亿用户,但目前 Facebook 的用户增长速度缓慢仍是其面临的一大难题,而中国这个拥有海量用户的市场或许可以解决这个难题。为此,马克-扎克伯格也多次造访中国,与中国领导人交谈,甚至苦学中文,为了能够进入中国市场 Facebook 可谓不遗余力。&/p&&p&而据美国《纽约时报》报道,为了进入中国市场,Facebook 又想出了新办法。Facebook 或已通过授权中国本土公司的形式,在中国的 App Store 和安卓应用商店推出了一款名叫彩色气球的应用,以这种方式来完成「曲线入华」。&/p&&p&&br&&/p&&h2&&b&专注分享照片的应用&/b&&/h2&&p&彩色气球是一款专注于分享照片的应用,它可以让用户根据时间、地点、人物等要素,快速整理手机中的照片和视频,并创建相册。&/p&&p&根据其自己的说法,彩色气球主要有以下的功能:&/p&&ul&&li&集中私密保存用户所有的照片与视频&/li&&li&好友之间彼此快速分享照片&/li&&li&将活动或旅途中拍摄的所有照片统统收集起来&/li&&li&查看用照片制作的精美光影秀,并分享到社交网络平台&/li&&li&利用搜索功能,找到本人、好友、地点等相关的照片 &/li&&li&将照片原图保存到收藏夹&/li&&/ul&&p&彩色气球中也加入了中国特色,在创建相册之后,用户可以直接邀请其微信好友加入到相册中。而在用户向好友发出邀请之后,好友会收到一张关于相册的二维码图片,扫描二维码后,就可跳转到相册中。&/p&&img src=&/v2-c3dca3ac238fa4bc5e7fb64_b.jpg& data-rawwidth=&1529& data-rawheight=&1358& class=&origin_image zh-lightbox-thumb& width=&1529& data-original=&/v2-c3dca3ac238fa4bc5e7fb64_r.jpg&&&p&此外,彩色气球还使用了面部识别的技术。彩色气球可以根据照片中的场景进行分类,并识别出照片中出现的朋友们。在做到了这些事之后,用户就可以轻松地与出席同一活动的朋友们分享自己的照片了。同时,它还可以利用面部识别技术为用户的照片按人分类,用户就能直接看到某些朋友们的照片了。&/p&&p&&br&&/p&&h2&&b&犹如 Moments 的「孪生兄弟」&/b&&/h2&&p&虽未被证实与 Facebook 有何关系,但彩色气球中却处处显示着 Facebook 的「基因」,它和另一款来自 Facebook 的应用 Moments 几乎一模一样,犹如一对「孪生兄弟」。&/p&&img src=&/v2-57aa9ddf166efe25a99e91_b.png& data-rawwidth=&368& data-rawheight=&182& class=&content_image& width=&368&&&p&从图标开始就可以看到两者的相似之处,图标同样为红黄蓝三色气球,只不过是将红黄两气球位置大小以及颜色的透明度进行了调整。点击图标,来到登录注册界面,这个界面也是极其的相似,仔细的你还会发现,在 Moment 的左下角出现了「彩色气球」的字样。而两者的不同之处在于,彩色气球需要使用手机号码进行注册登录,Moments 则通过 Facebook 账户。&/p&&img src=&/v2-95965ab5bed99f4795e5bdbb7d9472c6_b.jpg& data-rawwidth=&1529& data-rawheight=&1358& class=&origin_image zh-lightbox-thumb& width=&1529& data-original=&/v2-95965ab5bed99f4795e5bdbb7d9472c6_r.jpg&&&p&进入应用来看一下具体的功能,两款应用都可以根据地点、时间等因素对照片进行智能分类并创建相册,且都支持面孔,地点等识别。而从 UI 来看,两者也简直如同一个模子里刻出来的一般。两款应用仅存的不同点就是,彩色气球可在国内使用且支持分享到微信平台,而 Moment 在国内无法使用且只能分享到 Facebook。&/p&&p&&br&&/p&&h2&&b&是 Moments 的「新衣」还是山寨厂商的乌龙?&/b&&/h2&&p&两款应用如此之像,难免让人浮想联翩,彩色气球到底是换了「新衣」的 Moment 还是国内山寨厂商的乌龙之作?&/p&&img src=&/v2-998b0ed354e5bce6c71bc61db2692dbd_b.jpg& data-rawwidth=&1529& data-rawheight=&1358& class=&origin_image zh-lightbox-thumb& width=&1529& data-original=&/v2-998b0ed354e5bce6c71bc61db2692dbd_r.jpg&&&p&彩色气球上架于今年的 5 月份,在这之后彩色气球一直保持着几乎与 Moment 同步的更新频率,这一点很耐人寻味。而更是有心人找出了彩色气球开发商的法人代表,更加有意思的是,这位法人代表在今年出席了 Facebook 在中国的高级会议,能够参与这样的高级会议说明了这位法人代表与 Facebook 的关系非同一般。同时前面也指出,在 Moment 的登录的界面中也出现了「彩色气球」的字样。&/p&&p&虽然这些细节以及说法似乎都在证明彩色气球就是中国版的 Moment,但仅依靠这些推断还是不够的,毕竟到目前为止没有任何官方消息可以证明彩色气球是 Facebook 推出的中国产品。■&/p&&p&原文链接 → &a href=&/?target=http%3A//www.geekpark.net/topics/221177& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&「曲线入华」?听说 Facebook 推出了这款彩色气球 App&i class=&icon-external&&&/i&&/a&&/p&
文 | Sun小Lei 中国市场早已是全世界企业眼中的一块肥肉,许多外国公司都期望着能够尽快打开中国市场,Facebook 也不例外。尽管已经拥有 20 亿用户,但目前 Facebook 的用户增长速度缓慢仍是其面临的一大难题,而中国这个拥有海量用户的市场或许可以解决这…
&p&在2017年Esri UC即将开始之前,Esri官方发布了一系列关于产品的常见问题,对于ArcGIS Pro是否会替代ArcMap,回答非常明确,会!(原文请见Esri UC 2017 Q&A)。Esri明确了ArcGIS Pro是新一代的桌面产品,并致力将其打造为世界上最好的桌面产品!&/p&&br&&img src=&/v2-2fa211a3e75c3e09d70c_b.png& data-rawwidth=&640& data-rawheight=&175& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-2fa211a3e75c3e09d70c_r.png&&&br&&p&现附上才翻译的ArcGIS Pro 2.0视频,&/p&&p&&a href=&///?target=http%3A//.cn/article/3159& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一览无余ArcGIS Pro 2.0新特性-中文字幕&i class=&icon-external&&&/i&&/a&&/p&&p&&b&该视频中主要从地图浏览(Map Exploration)、场景图层(Scene layer)、符号绘制(Symbol Layer Drawing)、SDK、Task、CAD、布局(Layout)、Python、地理处理(Geoprocessing)、SVG、时空挖掘(Space Time Pattern Mining)、Favourite、数据检查(Data Reviewer)、自定义坐标(Custom Coordinate)、图表(Chart)、注记(Annotation)、3D Shapes、网络分析、数据互操作(Data Interoperability)、Workflow Manager、Traverse、Aviation、三维分析(3D Analyst)、Raster(栅格)等方面系统介绍ArcGIS Pro 2.0新特性,并用示例做了详细展示。&/b&&/p&&img src=&/v2-14fb216fe1e3ddb4148c_b.jpg& data-rawwidth=&1120& data-rawheight=&630& class=&origin_image zh-lightbox-thumb& width=&1120& data-original=&/v2-14fb216fe1e3ddb4148c_r.jpg&&&br&&img src=&/v2-e6ca9f31891ba_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-e6ca9f31891ba_r.jpg&&&br&&img src=&/v2-54acfcf789f9e79f5981ca52cfd864bb_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-54acfcf789f9e79f5981ca52cfd864bb_r.jpg&&&br&&p&下面转自ArcGIS极客说&/p&&br&&p&Esri近年一直不断增强和完善ArcGIS Pro:功能上,原ArcMap的功能不断向Pro中迁移,截止目前约90%的功能已迁移完成;同时二三维融合、矢量切片等一些特色功能也不断吸引新老客户的注意;性能方面,随着版本的升级,Pro性能不断提升,欢迎实际体验,相信会让您满意。&/p&&br&&p&&b&美国时间6月27日,ArcGIS Pro推出2.0版本,带来更完善的工作流,创新出其他桌面GIS中支持不了的功能,并与ArcGIS平台其他产品更加紧密的集成。&/b&&/p&&br&&p&一、更完善的工作流&/p&&p&ArcGIS Pro 2.0对现有工作流进行了优化,使其更加易用、更加强大。现在您可以在Pro中单独执行更加完整的工作流,如地图创建和数据管理。&/p&&p&- 创建带标注和格网的地图,使地图更加有效和有实际使用价值。&/p&&p&- 当从一个新项目开始时,通过收藏夹大大改善向项目添加资源的流程。&/p&&p&- 直接在ArcGIS Pro中修改拓扑属性。&/p&&p&- 增强遍历工具以提高COGO工作流程。&/p&&p&- Catalog面板中添加了导入、导出数据菜单。&/p&&p&二、独特创&/p&&p&ArcGIS Pro 2.0具有一些独特的功能创新,是其他桌面GIS软件不具备的。&/p&&p&- 使用创新的3D导航控件轻松探索3D景观并实现3D和2D地图的同步。&/p&&p&- 通过嵌入动态交互图表,地图布局(layout)更加有用和强大。&/p&&p&- 对3D绘图的改进,包括通过相机距离的特征绘制和3D对象的增强照明,使3D可视化效果更好。&/p&&p&- 通过填充缺失值工具增强分析能力及增强时空立方体。&/p&&p&- 新增更多新的地理处理工具,仅在ArcGIS Pro中支持。&/p&&p&三、与ArcGIS平台集成&/p&&p&ArcGIS Pro 2.0与ArcGIS平台其他产品集成良好, 包括ArcGIS Online, ArcGIS Enterprise,以及丰富的即拿即用的apps. 跨平台工作流变得更加简单、强大。&/p&&p&- ArcGIS Pro 2.0 SDK增强对空间数据库的编辑与交互能力&/p&&p&- 在ArcGIS Pro中直接使用本地OGC WFS服务.&/p&&p&- 与在Portal for ArcGIS 10.5.1中通过引用数据创建的要素图层同步&/p&&p&- 共享web scenes和 web scene layers时包含垂直坐标系。&/p&&p&- 当进行打包操作时,Pro可以继续工作。另外,Pro关闭后,后台依然可以执行打包工具。&/p&
在2017年Esri UC即将开始之前,Esri官方发布了一系列关于产品的常见问题,对于ArcGIS Pro是否会替代ArcMap,回答非常明确,会!(原文请见Esri UC 2017 Q&A)。Esri明确了ArcGIS Pro是新一代的桌面产品,并致力将其打造为世界上最好的桌面产品! 现附上才翻…
这个问题挺有意思的,发表下我的看法.&br&
编程开发四年了,第一份工作从事windows下的C开发,&br&
公司里面使用的是IBM的台式机,&br&
后来为了开发以及看文档更加方便加了一台显示器.&br&
自己的笔记本只是作为工作之余使用,没有什么特别的要求.&br&&br&
后来加入HP,主要以Linux下面的C开发为主,&br&
公司的开发环境都是笔记本了,笔记本当然是公司自产的牌子~&br&
这个时候才算开始以笔记本作为主要的开发工具.&br&&br&
总结了下,想到有这些特点或者是比较特别的要求~&br&
1. 屏幕够大,至少15.6寸宽屏的才够看代码,要不然根据文档对应代码的话会比较麻烦.&br&
或者再外加一个液晶显示器...如果公司有多的话..&br&
2. 同时不要太重,外出携带或者搬到会议室开会时很不方便.&br&
3. 加密和防盗功能.毕竟是工作用,需要保密和防盗锁.&br&
4. 接口设计合理,够丰富. USB接口,显示器接口,HDMI接口.&br&
5. 集成蓝牙模块. 电话会议时使用蓝牙耳机,外出会议时携带蓝牙鼠标.&br&
6. 散热性好,没有太大噪音.工作用一般长时间不关机的,如果散热不好笔记本寿命会减少.&br&
7. 续航有保障.会议室里面一般不会再带上电源,支撑一个上午或者下午(不用时待机)很有必要的.&br&
8. 如果你是从事ios相关开发,要么使用苹果的笔记本,要么笔记本配置强悍,能流畅跑有xcode环境的虚拟机. 或者另外一种方法,使用mac mini作为开发设备,在你的笔记本上用vnc连上去.&br&
9. 先想到这么多.呵呵,希望对你有帮助吧.&br&&br&&br&&br&
这个问题挺有意思的,发表下我的看法. 编程开发四年了,第一份工作从事windows下的C开发, 公司里面使用的是IBM的台式机, 后来为了开发以及看文档更加方便加了一台显示器. 自己的笔记本只是作为工作之余使用,没有什么特别的要求. 后来加入HP,主要以Linux下面的…
我来打个酱油~平时空闲时间很多,除了健身、画画,也很喜欢做手工,是一件很有意思的事情。&br&第一种是纸模&br&&img data-rawwidth=&960& data-rawheight=&1280& src=&/v2-73fe725a81b2edf3d9a9_b.jpg& class=&origin_image zh-lightbox-thumb& width=&960& data-original=&/v2-73fe725a81b2edf3d9a9_r.jpg&&&br&&br&&img data-rawwidth=&932& data-rawheight=&1280& src=&/v2-316ec430a27bb4ffcdde6c7_b.jpg& class=&origin_image zh-lightbox-thumb& width=&932& data-original=&/v2-316ec430a27bb4ffcdde6c7_r.jpg&&&br&&img data-rawwidth=&960& data-rawheight=&1280& src=&/v2-86c07f313613cce161ad6a_b.jpg& class=&origin_image zh-lightbox-thumb& width=&960& data-original=&/v2-86c07f313613cce161ad6a_r.jpg&&&br&&img data-rawwidth=&960& data-rawheight=&1280& src=&/v2-f45eab1de_b.jpg& class=&origin_image zh-lightbox-thumb& width=&960& data-original=&/v2-f45eab1de_r.jpg&&&br&这个教堂做了大半个月,3d纸模,难度系数不是很高,需要比较有耐心,比较花时间,每一个零件都需要剪好,折叠,粘贴。还好老板没看见我做这个,不然肯定扣工资 &br&&img data-rawwidth=&1280& data-rawheight=&1280& src=&/v2-a27a55e57e92a1ba4583_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-a27a55e57e92a1ba4583_r.jpg&&&br&&img data-rawwidth=&1280& data-rawheight=&1280& src=&/v2-f37b9ff5c24fbdf904784d_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-f37b9ff5c24fbdf904784d_r.jpg&&&br&&img data-rawwidth=&1280& data-rawheight=&1280& src=&/v2-c85ddbb4ddeff_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-c85ddbb4ddeff_r.jpg&&&br&这个也是3d纸模,这个是一页页用刻刀刻好,拼接在一起的,做这个断了6把刻刀…稍有点虐手,感觉比做上面那个更虐,只是没那么费时间。&img data-rawwidth=&1280& data-rawheight=&852& src=&/v2-6e7bd6ff21a5a25322f95fff96b481a0_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-6e7bd6ff21a5a25322f95fff96b481a0_r.jpg&&&br&&img data-rawwidth=&1280& data-rawheight=&852& src=&/v2-17ac3fae8ddfdd_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-17ac3fae8ddfdd_r.jpg&&&br&&img data-rawwidth=&1280& data-rawheight=&852& src=&/v2-851a3dd7f86f4e40d14d3ff0beb4cd90_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-851a3dd7f86f4e40d14d3ff0beb4cd90_r.jpg&&&br&这个是超轻粘土画~就是永超轻粘土做的。超级喜欢的一幅画,梵高的The Starry Night,最近把它开心的送出去了哈哈哈哈。下次想尝试另外的。&br&&img data-rawwidth=&1280& data-rawheight=&1280& src=&/v2-d6f7f33d8dda_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-d6f7f33d8dda_r.jpg&&&br&&img data-rawwidth=&1280& data-rawheight=&1280& src=&/v2-5b944e9c0dfb_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-5b944e9c0dfb_r.jpg&&&br&这是用针钩针的,家里妈妈剩的毛线,还挺好玩儿的~织了一个就停不下来了哈哈哈
我来打个酱油~平时空闲时间很多,除了健身、画画,也很喜欢做手工,是一件很有意思的事情。 第一种是纸模 这个教堂做了大半个月,3d纸模,难度系数不是很高,需要比较有耐心,比较花时间,每一个零件都需要剪好,折叠,粘贴。还好老板没看见我做这个,不然…
&img src=&/v2-305addebcfe6acb51efeb4b285d254ce_b.jpg& data-rawwidth=&1200& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&/v2-305addebcfe6acb51efeb4b285d254ce_r.jpg&&&p&我接触 Python 并不算早,第一次使用 Python 写生产系统的程序是2004年,那时候我已经有了几年的编程经验。当然了,现在这年头说早晚都不合适,昨天我说2000年就开始使用 Vim 编程了,有小伙伴回复,那年我才12,这……多少有点尴尬。&/p&&p&早期用 Python 主要写一些服务器端的工具,后来也写后端服务,再后来还写过内容抓取、数据分析和 Alfred 的插件等一系列杂七杂八的东西,简单的工具用 Shell 写,复杂的和庞大的用 C 或 Java 实现,中间的三不管地带,用 Python 就好,每次都不会让你失望。年那段时间我参加了一个类似 Corba 的分布式应用系统的开发,与国外的程序员合作,写了大量的 Python 代码。&/p&&p&Python 有什么好处?功能强大,使用简单,语言唯一性的特征明显(唯一性的意思就是你不能用十八种写法实现一个功能),而且具备海量的第三方库……Python 程序员最爱说的一句话是:人生苦短,我用 Python(也是 Python 之父的名言)。这句话与「PHP 是世界上最好的编程语言」一样并世无双,可谓「倚天不出,谁与争锋」。&/p&&p&Python 支持交互式编程、面向对象编程、函数式编程、面向切面编程、当然还有元编程。目前这门编程语言在兵器谱的排名是第四,前三位分别是Java、C 和C++。江湖上人称四哥的,就是 Python。&/p&&img src=&/v2-dbfb1fbfb02_b.jpg& data-rawwidth=&2646& data-rawheight=&1337& class=&origin_image zh-lightbox-thumb& width=&2646& data-original=&/v2-dbfb1fbfb02_r.jpg&&&h2&Python 起源&/h2&&p&Python 之父是 Guido van Rossum,荷兰人。每个编程语言的作者都是一个技术传奇,Guido 也不例外。他1982年从阿姆斯特丹大学毕业,获得了数学和计算机两个硕士学位,最爱做的事情就是编写代码。那个时代,流行的语言是汇编、C、Fortran 等,这些语言要求编程者对计算机的运行机制有精确的了解,以充分利用硬件资源达成自己的目标,因为硬件资源实在是太匮乏和宝贵了,程序员们需要榨干计算机硬件的每一滴血和汗才能完成任务。&/p&&p&这给 Guido 带来很多困惑,用 C 实现个功能吧,完成度没有问题,但是需要耗费大量时间。用 Shell 吧,面对复杂问题又束手无策。Shell 是 Unix/Linux 下的脚本语言,也叫胶水语言,它可以把系统的各种功能通过管道(比如:find . -name “*.java” | xargs grep chjq)的方式连接起来实现系统运维、定时任务、文件处理、程序安装卸载等工作,但是处理复杂的数值运算或系统调用就很麻烦。这时候需求就来了,Guido 希望一门语言既能像 C 语言一样能够全面掌控计算机的资源,也能像 Shell 一样使用简单,还具备交互性编程能力,轻轻松松编写一些小的工具包。&/p&&p&普通人 —— 比如我 —— 有了这种需求就会对自己说,再等等,也许隔壁冯老师会做出来呢。冯老师的想法就更简朴了,我又不写代码,关我什么事。幸好 Guido 没这么想,Guido 对自己说的是,放着我来!&br&&br&1989年的冬天,Guido 为了度过一个有意义的圣诞节,或者为了打发一个无聊的假期,开始编写 Python 语言的编译器和解释器,灵感来自教学语言 ABC(你不知道还有这种语言吧)。为什么叫 Python?因为 Guido 很喜欢 BBC 电视剧 —— 蒙提·派森的飞行马戏团(Monty Python's Flying Circus)。ABC 则是由 Guido 参加设计的一种教学语言。Guido 一直认为 ABC 这种语言非常优美和强大,是专门为非「专业程序员」设计的。但是 ABC 语言并没有成功,究其原因,Guido 认为是非开放造成的。Guido 决心在 Python 中避免这一错误,这一次他成功了。&/p&&p&1991年,第一个 Python 版本诞生,编译器是 C 语言实现的,Python 语言可以非常方便的调用 C 语言实现的库(这一点太重要了)。从一问世,Python 就是一个动态语言,面向对象编程的语言,具备类、函数、异常处理、列表(list)、词典(dict)、元组等数据类型。&/p&&p&Python 的语法同时受到了 C 和 ABC 语言的影响,比如采用 def 来定义函数,比如等号赋值,比如强制缩进。如果你是个 C 或 Java 程序员,习惯了用大括号来划分程序域 —— 其实大部分语言都是这么做的 —— 看到 Python 是用缩进来搞定这件事,你马上会觉得「Holy shit」,其实这种做法来自 ABC,Guido 的想法是,如果「常识」上确立的东西,没有必要过度纠结。当然,这种常识是 Guido 的常识,至于其他人,你们会习惯的。&/p&&p&事实也是如此, Python 吸引了大量的程序员,他们开始协同改进这门语言,Python 开始了改变世界的征程。&/p&&p&日 Python 2.0 发布,这次增加了实现完整的垃圾回收,并且支持 Unicode 编码。Guido 在开发的过程中一直遵循了开放的原则,社区协作的模式从最初的邮件列表改为开源的方式,Python 吸收了大量开发者和编程语言的特点,比如,Python 中的正则表达参考了 Perl,而内置函数 lambda,map,reduce,filter 等则参考了 Lisp,无数优秀的程序员为 Python 添砖加瓦,Python 搞不定的,没关系,我们用 C 实现,于是 Python 有了大量的函数库,尤其在数据分析和科学计算领域。另外,函数在 Python 中是一等公民,所以 Python 同时也是一种函数式编程语言。&/p&&p&Python 稳步发展,成为了一代老牌编程语言。&/p&&h2&Python 的应用&/h2&&p&每个编程语言都有自己的 Hello World,Python 最为简单。如果你有台 Mac 电脑,Python 的 SDK 是默认安装的。打开终端,输入 python 进入 python shell 的交互界面,然后键入&/p&&blockquote&&p&&&& print “Hello World”&/p&&/blockquote&&p&程序写完了。&/p&&p&Python 这么简单,是不是一门玩具语言呢?当然不是。NASA 的火箭发射仪表盘系统使用了 Python 的 Tkinter —— 支持实时响应的 GUI 库。NASA 的太阳物理学分词库 SunPy 也是基于 Python 写的。YouTube 基于开发速度的考虑,大部分代码是 Python 实现的,YouTube 的流量有多大,老百姓不知道,程序员应该知道。Google、Dropbox 更是大量采用 Python 语言(Guido 工作过的两个地方)。国内的豆瓣、知乎也是 Python 的重度使用者。&/p&&p&虽然 Python 已经被广泛使用了,但前几年它在兵器谱上总是排 8-12 的位置。最近两年事情开始发生变化,去年 Python 开始迅速攀升至第五名,今年更进一步,排名第四。为什么会发生这种变化呢?并不是 Python 增加了什么了不得的特性,而是人工智能和机器学习的时代来临了。&/p&&h2&AI 时代的 Python&/h2&&p&我来做一个不负责任的判断,Python 将成为大数据、AI 和机器学习时代的第一编程语言。可以想象这样一个场景,Python 和 Java、Go、C、C#、Ruby、PHP……坐在圆桌前开会,Python 抱着头后仰在 Herman Miller 工程椅上,慵懒的对其他编程语言说:&/p&&blockquote&&p&对不起,我不是针对你,我是说,所有在座的各位,都只能挣第二。&/p&&/blockquote&&p&当然了,这个语言范畴是限定在大数据、AI 和机器学习领域。但是,如果这个领域在未来的应用足够广泛,那 Python 直接灭掉 Java 当大哥也不是不可能的。&/p&&p&Python 性能这么差,对多核并发编程支持的也不好,并且长期分裂成了 Python 2 和 Python 3 两个阵营,给开发者带来了诸多不便和麻烦,为什么能后来者居上呢?&/p&&p&因为 Python 遵循了现代的木桶原理。&/p&&h2&Python 的木桶原理&/h2&&p&我在自己的小密圈(目前已经涨价到128元,因为贵即是好)提了一个问题:为什么很多数据分析和机器学习的框架都会选用 Python 做主要的开发或首选支持的语言呢? &/p&&p&一位女程序员颖儿的回答最靠谱:免费,简洁,生态好,库丰富,操心少;之前刷机器学习的题,用 C# 写了一坨儿。结果人家引个 SciPy 库,三行代码搞定。&/p&&p&SciPy 是一个数值计算库,NumPy 是 Python 另一个开源的数值计算扩展库,Pandas 是基于 NumPy 的数据分析工具,matplotlib 是图形绘制库,最近火热的 Scikit-learn 则是开源的机器学习框架。这些库对于 Python 来说就三个字:「随便用」。长此以往,围绕 Python 语言构建出来的生态库让其他语言望尘莫及,尤其是在科学计算、数据分析和机器学习领域。&/p&&p&以前我们说「木桶原理」是讲一只水桶能装多少水取决于它最短的那块木板,所以我们应该去思考和补齐自己的短板,才能成事。到了现代,知识爆炸信息拥堵,没人有时间去补齐短板,能够让自己的长板足够长就不错了。短板怎么办,找别人来补齐啊。能协作的组织和人才是最有生命力的。&/p&&p&Python 也是一样。自诞生以来,一直保持了简单、开放、语言工业化,具备良好的封装、组合、嵌入能力,开发效率惊人。Python 把这些方面做到极致,其他的事情,留给别人去干嘛。&/p&&p&你们不是觉得 Python 慢么,自然有人给开发出 PyPy、Cython、Jython、Numba 这样的编译器工具来提高 Python 的效率。要进行科学计算、大数据分析,好了,SciPy、Pandas 诞生了,要机器学习,scikit-learn、Theano、Pylearn2 等机器学习库开发出来了。Python 调用这些用 C 或者 Fortran 开发出来的库比原生语言调用还方便,你说大家能不用 Python 么?&/p&&p&每当新事物来临的时候,总有很多专家里手对新手们竖起一道高墙,比如机器学习总被放到学术研究和 CS 科班出身这堵墙的后面,让人望而生畏。其实,机器学习这个领域,同样是个金字塔,这些专家和博士以及人工智能算法的创造者们,属于塔尖的极少数人,他们发现原理,实现算法,引领潮流,突破极限,然后呢?基于这些算法和原理开发应用和使用应用的,是广大的程序员和人民群众,他们可能没有那么高深的数学知识,不知道 Regression 和 Decision Tree 算法,不了解散布矩阵……那我们可以用 Python 调包啊,只要那些包足够成熟就好了。&/p&&p&也许未来每个人与机器沟通的每一句话,就是唤起了一段 Python 代码呢?&/p&&h2&Python 的分裂&/h2&&p&Python 2 和 Python 3 已经长期共存了数年之久,原因很复杂,对于这个话题,足够写另一篇文章了。目前官方表示对 2 的支持到2020年,但 2 的生态库远远大于 3,这就让人很纠结。&/p&&p&关于该学哪个版本的常见问题,我的回复是,最好都学,语法区别并不是很大。&/p&&p&人人都应该使用Python!&/p&&p&&b&文章来自公众号「MacTalk」,请搜索关注。&/b&&/p&
我接触 Python 并不算早,第一次使用 Python 写生产系统的程序是2004年,那时候我已经有了几年的编程经验。当然了,现在这年头说早晚都不合适,昨天我说2000年就开始使用 Vim 编程了,有小伙伴回复,那年我才12,这……多少有点尴尬。早期用 Python 主要写…
&p&优先级别不同:iOS最先响应屏幕。当我们使用iOS或者是Android手机时,第一步就是滑屏解锁找到相应程序点击进入。而这个时候往往是所有操控开始的第一步骤,iOS系统产品就表现出来了流畅的一面,但Android产品却给人一种卡顿的现象,更别说后续深入玩游戏或者进行其它操控了。这是为什么?&/p&&p&其实这与两个系统的优先级有关,iOS对屏幕反应的优先级是最高的,它的响应顺序依次为Touch--Media--Service--Core架构,换句话说当用户只要触摸接触了屏幕之后,系统就会最优先去处理屏幕显示也就是Touch这个层级,然后才是媒体(Media),服务(Service)以及Core架构。而Android系统的优先级响应层级则是Application--Framework--Library--Kernal架构,和显示相关的图形图像处理这一部分属于Library,你可以看到到第三位才是它,当你触摸屏幕之后Android系统首先会激活应用,框架然后才是屏幕最后是核心架构。&/p&iOS系统优先处理Touch层级(图片来自网络)&p&可以看到优先级的不同导致了iOS产品以及Android手机在操控过程中的表现差异,当你滑动屏幕进行操控的时候,iOS系统会优先处理Touch层级,而Android系统则是第三个才响应Library层级,这是造成它们流畅度不同的因素之一。不过优先级对系统流畅性有有影响不假,但并不是最绝对的,造成两系统之间流畅性不一的现象还有其它因素,我们可以接着往下看。&/p&&p&硬件工作配置不同:iOS基于GPU加速。目前智能手机硬件装备竞赛当中,其实处理器等配置已经达到了一个瓶颈期,各大旗舰产品在硬件比拼当中基本上没有太大的区别,而这时候GPU就成为了一个凸显差异的重要因素。一些大型软件像是3D游戏对GPU性能要求都会比较高,苹果iPhone产品采用的Power VR SGX系列GPU在当下来说非常的主流,跑分测试数据证明了它并不会比一些旗舰级别的Android产品差劲。&/p&A6处理器集成了Power VR SGX543显示芯片(图片引自驱动之家)&p&而iOS系统对图形的各种特效处理基本上正好都是基于GPU硬件进行加速的,它可以不用完全借助CPU或者程序本身,而是通过GPU进行渲染以达到更流畅的操控表现。但是Android系统产品则并非如此,因为Android需要适应不同的手机硬件,需要满足各种差异配置,所以很多图形特效大多都要靠程序本身进行加速和渲染,并严重依赖CPU运算的操作自然会加大处理器的负荷,从而出现卡顿的问题。虽然Android 4.0以及4.1等更高版本中进行了改进将硬件加速设为默认开启,但依旧无法做到所有特效全部都靠GPU进行加速。在很多Android手机里面都自带有“是否开启GPU渲染”这个功能选项,不过开启之后的改善也是微乎其微。&/p&iOS图形特效基于GPU加速渲染&p&屏幕最先响应的优先级关系,再加上iSO本身GPU加速程序的特性,使得大家在操控过程中感觉iOS手机拥有着不错的流畅性。因为它本身的整个流程都是在为最大化的流畅做服务,不管是第一印象的滑动接触屏幕,还是你进一步使用程序之后的更深层操作都是如此。而GPU加速这点特性,应该是它优于Android系统流畅性的又一个因素。&/p&&p&开发机制不同:安卓机制效率低。 Android的编程语言是JAVA,而iOS的则为Objective-C,不过要是说Android系统之所以有些卡顿是因为JAVA开发语言的关系,或者是拿它和Objective-C对比肯定会有人提出质疑。Objective-C的优势是效率高但比较“唯一”,而JAVA的优势则是跨平台不过运行效率相对偏低,其实这两个编程语言所带来的机制不同,就已经造成了各自系统之间的流畅性差异化。&/p&Android系统架构(图片来自网络)&p&iOS的Objective-C,编译器gcc,而这个gcc编译出来的代码又被苹果专为iOS架构优化到了极致,运行过程中也不需要虚拟机在中间插手,执行效率自然很高--引自网络。这一段话应该是iOS系统本身运行程序的执行过程,而Android是通过JAVA虚拟机来执行,并且系统需要占用大量内存来换取执行速度,再加上不定期的内存自动回收机制,从而直接导致了卡顿现象的出现。&/p&iOS系统架构有着不错的运行效率&p&Android的JAVA编程本身运行效率比Objective-C低一些,而且再加上内存自动回收的机制,所以造成了一些卡顿不流畅的现象出现。但根据技术人员讲解,现代的JAVA虚拟机效率已经不再是最大的瓶颈,Android 4.0系统版本之后的卡顿现象明显得到了改善,所以这也是有用户并没有发现自己新买的Android手机出现太多卡顿现象的原因。看来编程语言和机制已经被Android进行了改善,这同样也不是造成它与iOS流畅性偏差的唯一因素,不过影响却是实实在在存在着。&/p&&p&系统设计不同:安卓APP无法统一。有了优先级的关系,有了GPU加加速的影响,还有两个系统各自编程以及机制的问题,似乎已经可以说明为什么iOS相比Android更为流畅的原因。但最终还有一个问题是就是应用程序,很显然用户觉得卡顿都是在运行软件的过程中产生,毕竟没有安装任何应用的初始出厂手机基本上都不存在不流畅或者延迟等现象,而且一款智能手机不安装任何应用程序那也不符合用户的购买初衷和使用行为。所以归根结底,Android相比iOS的应用程序,到底出了什么问题?&/p&App Store是苹果和iOS的另一个标志&p&因为iOS产品的封闭性,所以所有的APP运行对象都比较单一,因为每个应用程序都是被运行在iPhone,iPad等iOS产品当中,它们有着很高的硬件利用效率。因为iOS系统的配件供应商只有那么几家,CPU也是一年换一次,这点不像Android终端年年变月月变,开发者很难遇见未来终端分辨率会包含多少种,GPU驱动会包含哪些等等,所以相对来说Android应用开发成本较高且收益较慢。而iOS应用开发则因为软硬件垂直整合而受益,这样一来苹果自然就保证了应用本身其与硬件产品之间的完美结合程度。&/p&&p&其实Android和iOS两大系统APP开发情况的不同,也正是它们开发和不开放的特性所造成的。如果要是拿旗舰Android手机加上一个专为这款旗舰产品设计的游戏,来和苹果iPhone 5运行对比的话,你真的不会遇到Android旗舰机出现卡顿延迟的问题,为什么因为这款游戏针对这款手机设计,在软硬等方面都达到了最大化的兼容和优化,自然就不会出现停滞的现象。&/p&Android App虽然奋力追赶在但数量和质量上并未超越iOS&p&而Android系统程序要被安装在各种符合要求的手机上面,开发者也不可能针对所有的机器型号进行开发,只能在比较主流的机器上进行测试并保证运行效果,所以他们为了兼顾整个产品线只能不得不降低游戏体验以达到高中低产品可以共用的效果。最后那些占据了Android终端份额的大量大众用户们由于自己的手机不是旗舰产品而得不到流畅的使用体验,自然而然就会产生Android产品不如iOS流畅的抱怨。&/p&&p&不管是iOS产品感觉比Android流畅还是真的比它流畅,其实说到底原因很简单。苹果会花费一年甚至两年的时间去开发一个桌面icon,一种字体,并去测试屏幕点位,而Android终端中除了Nexus系列之外似乎没有太多产品可以做到用这么长的时间去做这么细致的事情。有网友说得好,Android做的更多的是“让系统跑起来”,而iOS拥有着苹果做的更多的则是“让系统以最高的效率跑起来”,或许这就是iOS产品比Android更流畅的原因吧。但更好的一面的是随着谷歌对Android的持续升级以及各厂商对自家产品的循序改进,使得越来越多的Android终端正在摆脱卡顿不流畅的束缚,未来安卓用户的期待同样有望得到更好的满足。&/p&
优先级别不同:iOS最先响应屏幕。当我们使用iOS或者是Android手机时,第一步就是滑屏解锁找到相应程序点击进入。而这个时候往往是所有操控开始的第一步骤,iOS系统产品就表现出来了流畅的一面,但Android产品却给人一种卡顿的现象,更别说后续深入玩游戏或…
&img src=&/v2-fcfed498dad1_b.jpg& data-rawwidth=&1080& data-rawheight=&810& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&/v2-fcfed498dad1_r.jpg&&&blockquote&&p&&em&5 月 27-28 日,机器之心在北京 898 创新空间顺利主办了第一届全球机器智能峰会(GMIS 2017)。中国科学院自动化研究所复杂系统管理与控制国家重点实验室主任王飞跃为大会做了开幕式致辞。大会第一天,「LSTM 之父」Jürgen Schmidhuber、Citadel 首席人工智能官邓力、腾讯 AI Lab 副主任俞栋、英特尔 AIPG 数据科学部主任 Yinyin Liu、GE Transportation Digital Solutions CTO Wesly Mukai 等知名人工智能专家参与峰会,并通过主题演讲、圆桌论坛等形式从科学家、企业家、技术专家的视角对人工智能技术前沿和未来发展进行了解读。&/em&&br&&/p&&/blockquote&&p&大会第一天下午,清华大学智能技术与系统国家重点实验室朱军发表了主题为《珠算:贝叶斯深度学习的 GPU 库》的演讲,他探讨分享了贝叶斯深度学习模型的计算平台:珠算。该平台由清华大学机器学习组开发,目前已经在 GitHub 上开源,参阅机器之心之前的报道《&a href=&/?target=http%3A//mp./s%3F__biz%3DMzA3MzI4MjgzMw%3D%3D%26mid%3D%26idx%3D3%26sn%3D993fd5f82bb6b11ec667cb%26chksm%3D871b245ab06cad4c453c4d27aad150da05f5a821b34d7b254c9b%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&清华大学发布珠算:一个用于生成模型的 Python 库&i class=&icon-external&&&/i&&/a&》。&br&&/p&&p&珠算项目地址:&a href=&/?target=https%3A///thu-ml/zhusuan& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&thu-ml/zhusuan&i class=&icon-external&&&/i&&/a&&br&&/p&&p&在 GMIS 2017 大会上,朱军从深度学习谈起,对该项目进行了更加深入的介绍,同时还在深度生成模型、贝叶斯推理等更广泛方面分享了自己的思考。在这篇文章中,机器之心对朱军的演讲内容进行了整理,同时为了更便于阅读,也进行了适当的编辑。&/p&&a class=&video-box& href=&/?target=https%3A///x/page/y0509hhzfyr.html& target=&_blank& data-video-id=&& data-video-playable=&& data-name=&GMIS 2017 | 朱军:贝叶斯深度学习的GPU库_腾讯视频& data-poster=&/qqvideo_ori/0/y0509hhzfyr_228_128/0& data-lens-id=&&&
&img class=&thumbnail& src=&/qqvideo_ori/0/y0509hhzfyr_228_128/0&&&span class=&content&&
&span class=&title&&GMIS 2017 | 朱军:贝叶斯深度学习的GPU库_腾讯视频&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&/x/page/y0509hhzfyr.html&/span&
&/a&&p&&strong&以下是该演讲视频的主要内容:&/strong&&/p&&br&&p&谢谢机器之心的邀请,很高兴有这个机会和大家分享一下我们实验室做的计算平台,因为我们是实验室,不像公司里有那么多的人,但我们做的东西是属于比较前沿的。&/p&&br&&img src=&/v2-bf6a306c1e727c8cf3dd961d1e6d5eae_b.png& data-rawwidth=&649& data-rawheight=&357& class=&origin_image zh-lightbox-thumb& width=&649& data-original=&/v2-bf6a306c1e727c8cf3dd961d1e6d5eae_r.png&&&p&我们研究的是贝叶斯深度学习,首先我跟大家分享一下为什么要关心贝叶斯深度学习。&/p&&br&&p&&strong&贝叶斯深度学习&/strong&&/p&&br&&p&现在深度学习在各个领域里有很多用处。虽然 Deep Learning 非常好,但还不足够好。我们看一下大家都很熟知的 Deep Learning 还存在的两个问题:&/p&&br&&img src=&/v2-63fc53c9db60c4735555f_b.png& data-rawwidth=&988& data-rawheight=&378& class=&origin_image zh-lightbox-thumb& width=&988& data-original=&/v2-63fc53c9db60c4735555f_r.png&&&p&一个问题是(深度学习)可能不是很鲁棒。可能会存在这种所谓的对抗样本,这有一个简单的例子,比如你有一个建筑物的图片,你可以用一个训练很好的神经网络分类得很准确。但是,我们可以加一些噪声,这些噪声可能是人检测不到的,合成一个图片之后却可以完全误导这个网络,甚至能够按照你的意愿误导分到某一个类。这是非常不好的性质,尤其我们在关键领域用深度学习的时候——一旦遇到这种情况发生,可能就会有一些比较致命性的错误发生。所以我们就想提出一个问题:机器学习或者深度学习本身能不能像人一样犯错误?人可能更多的时候是更鲁棒的,人可能会犯错误,但是人犯的错误相对都是比较直观、比较合理一点的——可能有某种道理在里面。&/p&&br&&p&另外一个问题是深度学习大部分情况下都被我们当成一个黑箱。所以现在有很多的工作,包括我们自己的工作,都是试图去解释深度学习学到了什么。这里我们列了一个去年做的 CNNVis 的工作,能展示卷积网络每一层是什么、层和层之间是怎么关联的。这个方法非常受欢迎,也从一个侧面说明了大家对这个问题关心的程度。&/p&&br&&p&在我看来,Deep Learning 本身属于机器学习的一个极端,它用了大量的训练样本,用了大量的计算资源。结果是我们在很多任务下,在特定环境、特定数据集上可以得到非常高的准确度,当然背后也有我们对网络结构的人为调整。&/p&&br&&p&另外一端是贝叶斯的学习方法,大家可能知道,2015 年的时候,在 AlphaGo 火之前,Science 有一篇文章就说怎么设计贝叶斯程序,在这种情况下可以用少量的训练样本帮助我们学非常精确的模型,当时展示的成果是这个贝叶斯程度可以(在手写体数字生成和识别任务上)通过视觉图灵测试。这从一个方面告诉我们:我们做学习的时候可以有不同的思路。&/p&&br&&img src=&/v2-d0bfe073c3ca6d1df127a_b.png& data-rawwidth=&956& data-rawheight=&375& class=&origin_image zh-lightbox-thumb& width=&956& data-original=&/v2-d0bfe073c3ca6d1df127a_r.png&&&p&这是学习范式的两个极端,两者之间就有很多的事情可以做。我们把中间称之为「贝叶斯深度学习(Bayesian Deep Learning)」。它既有贝叶斯本身的可解释性,可以从少量的数据里边来学习;另外又有 Deep Learning 非常强大的拟合能力。&/p&&br&&img src=&/v2-b72cd4b4a3a6de1d82b966eb506d4d63_b.png& data-rawwidth=&631& data-rawheight=&479& class=&origin_image zh-lightbox-thumb& width=&631& data-original=&/v2-b72cd4b4a3a6de1d82b966eb506d4d63_r.png&&&p&给大家看一个最近非常火的例子,叫深度生成模型(Deep Generative Models),这是典型的融合了深度学习和贝叶斯方法的模型。这里做了一个抽象:上面有一个隐含的变量,用 Z 表示;中间会经过一个深度神经网络,你可以根据你的任务选择不同的神经网络、不同的深度、不同的结构;下面是我们观察到的数据 X。这个场景有很多,比如对抗生成网络,可以生成高维的自然图片。实际上,Z 可以是非常随机的噪声,通过神经网络可以生成非常高质量的图片。&/p&&br&&p&在这种框架下,我们可以做很多。比如可以给隐含变量设定某些结构信息,比如生成人脸时,有一些变量指代人的姿态,另外一些变量可能描述其他的特征,这两个放在一起我们就可以构建这样一个深度生成模型。&/p&&br&&p&它同一列有同一姿态,可以变化其它变量来生成不同的图片。现在是非常受欢迎、非常强大的一种模型了。&/p&&br&&p&下面用更形式化的方式进行描述。我们用概率模型来描述,比如对 Z 变量(隐含变量),我们会用 P(Z) 来描述它的先验分布;中间有一个参数化的神经网络做变换;最后生成我们想要的数据 X。在不同场景下,这个 Z 的含义可能不一样。比如:如果要生成医学图片,我们通常希望 Z 能够表达造成疾病的原因;而对于文本图片,我们可能希望理解背后的主题等等。&/p&&br&&img src=&/v2-200c7add0fbbec66e88f9d_b.png& data-rawwidth=&769& data-rawheight=&387& class=&origin_image zh-lightbox-thumb& width=&769& data-original=&/v2-200c7add0fbbec66e88f9d_r.png&&&p&这个模型其实非常直观,但是它的难点在于我们所谓的 Inference(推断),这个过程是反向过来的——在 Inference 过程中,观察一些 X,然后我们用一些推导工具推导出我们观察到的 Z 到底是什么。在这个过程中,我们要用到一个主要的公式——贝叶斯公式。&/p&&br&&p&&strong&珠算&/strong&&/p&&br&&img src=&/v2-c1dafd98d86a789eb39356_b.png& data-rawwidth=&902& data-rawheight=&338& class=&origin_image zh-lightbox-thumb& width=&902& data-original=&/v2-c1dafd98d86a789eb39356_r.png&&&p&那么珠算平台到底是起到什么作用呢?&/p&&br&&p&我们都知道有很多公开的框架可以支持深度学习进行非常迅速的开发和原型设计,但目前还并没有很好的平台能支持贝叶斯深度学习。所以,我们构建了称之为珠算的平台。珠算平台可以支持我们进行深度学习,也可以支持贝叶斯推断,当然还可以是两者之间有机的融合。&/p&&br&&p&大家知道,珠算或算盘是最古老的计算机器(calculating machine),被认为是中国的历史第五大发明。我们之所以取名为「珠算」,就是希望这个平台能够从某种意义上给传统算盘一种新的解释,同时还希望这个平台能够进行高效的计算。&/p&&br&&img src=&/v2-35eb85e3f3b1c7d3e757ca7ac07d606e_b.png& data-rawwidth=&866& data-rawheight=&351& class=&origin_image zh-lightbox-thumb& width=&866& data-original=&/v2-35eb85e3f3b1c7d3e757ca7ac07d606e_r.png&&&p&珠算是一个生成模型的 Python 库,构建于 TensorFlow 之上。珠算不像现有的主要是为监督学习而设计的深度学习库,它是一种扎根于贝叶斯推断并支持多种生成模型的软件库。珠算区别于其他平台的一个很大的特点,即可以深度地做贝叶斯推断,因此,也就可以很有效地支持深度生成模型。珠算平台可以在 GPU 上训练神经网络,同时我们可以在上面做概率建模和概率推断,带来好处有:可以利用无监督数据、可以做小样本学习、可以做不确定性的推理和决策、可以生成新的样本等等。&/p&&br&&img src=&/v2-2dc4e097f25a1d800887cde4_b.png& data-rawwidth=&868& data-rawheight=&365& class=&origin_image zh-lightbox-thumb& width=&868& data-original=&/v2-2dc4e097f25a1d800887cde4_r.png&&&p&为了做珠算平台,第一步是个抽象过程,需要把一类的模型能够抽象表达出来,在这里我们用贝叶斯网络。贝叶斯网络是在深度学习流行之前非常主流的方法,它是一种非常好的形式化方式,能非常直观地刻画模型。但是,与传统的贝叶斯网络不通,我们是深度融合了贝叶斯方法和深度神经网络的优点,因此,我们的贝叶斯网络有两类节点:随机的节点和确定性的节点。确定性的节点基本上对应了深度神经网络的非线性变换,而随机节点可以描述不确定性。珠算是完全支持这两种节点的。在确定性的节点上我们把 TensorFlow 的所有操作都继承了下来。我们可以像在 TensorFlow 上构建神经网络一样构建中间的一些模块。如上图所示,构建一个模型很直观。我们首先只需要初始化 BayesianNet 环境,然后按照直观写模型。&/p&&br&&img src=&/v2-91c2bf0d8c88da51aa0800_b.png& data-rawwidth=&903& data-rawheight=&374& class=&origin_image zh-lightbox-thumb& width=&903& data-original=&/v2-91c2bf0d8c88da51aa0800_r.png&&&p&这是一个具体的例子,如上图所示,我们需要生成手写体字符,这种情况下因为数据不是很高维,用简单的生成模型就够了,比如有一个 Z 变量,Z 是随机的,经过两层的全连接的神经网络,最后生成我们的 X,这种模型在珠算里面非常容易写。可以在起始化 BayesianNet 环境之后,就沿着箭头的方向来写。比如:我们说 Z 变量服从一个高斯分布(z = zs.Normal()),珠算平台中有正态分布函数可以刻画该分布。接下来是两层的全连接层(layers.fully_connected()),最下面是数据的生成,比如我们数据是二值的,那么可以用伯努力随机分布来刻画它,这是非常直观地写模型的框架。你可以根据自己的需要书写其他的生成模型。&/p&&br&&img src=&/v2-5defab6b2dfeba_b.png& data-rawwidth=&1050& data-rawheight=&360& class=&origin_image zh-lightbox-thumb& width=&1050& data-original=&/v2-5defab6b2dfeba_r.png&&&p&对于这种模型最难的实际上是推断部分,在机器学习里有两类的推断方法,一种是变分(Variational)方法,一种是蒙特卡罗模拟方法。对于变分方法来说,红色的点是我们的目标,在某个概率分布空间里面,但我们并不能直接计算。所以,变分方法主要是希望在某个简化的子集里找一个蓝色的点去逼近它,我们希望这个逼近是最优的,所以通常情况下要解决最优化问题。这里边有很多推导公并没有提到。对于 MCMC 方法来说,现在主流的解决方法是构造一些动力学方程,以达到模拟的效果,这里也隐含了很多技术细节。&/p&&br&&p&因此,即使是非常简单的模型,如果要做推断都可能需要很多的数学推导,我们需要算梯度、调步长参数等等。而且很多步骤可能都会使我们犯错误,所以这是一个复杂的过程。而珠算要做的就是简化推导实现的过程,并用一个非常简洁的(概率)编程方式写出来,编程对计算机来说是最容易理解的。&/p&&br&&img src=&/v2-d72ddffa776e_b.png& data-rawwidth=&898& data-rawheight=&356& class=&origin_image zh-lightbox-thumb& width=&898& data-original=&/v2-d72ddffa776e_r.png&&&p&给大家两个例子看我们怎么通过珠算实现推断的。首先,比如我们要做一个变分推断,在珠算上变分推断只需要三步:第一步,我们要构造一个变分分布,这个变分分布就像我前面讲的生成模型一样,可以通过初始化一个 BayesianNet,然后非常直观地写每部分是确定性的还是随机的等等。第二步,可以调用一下变分目标(variational objective),比如 z.sgvb,珠算上实现了不同的变分目标。剩下的事情,就是使用梯度下降进行迭代,就像我们实现深度神经网络一样,不断地使用随机梯度下降进行迭代而达到优化,这是典型变分推断的实现。&/p&&br&&img src=&/v2-45fa2a07e2f3d_b.png& data-rawwidth=&964& data-rawheight=&354& class=&origin_image zh-lightbox-thumb& width=&964& data-original=&/v2-45fa2a07e2f3d_r.png&&&p&如果我们要做的是 HMC,HMC 是一个混合的蒙特卡罗方法或者哈密尔顿蒙特卡罗方法,这属于机器学习里面的一种十分优秀的算法,它可以处理高维空间里面的采样,该算法在珠算上也非常容易来实现。我们首先需要构建变量以储存样本,然后就可以初始化 HMC 采样器。接下来调用 sample() 函数就可以得到一个采样算子,随后的在不断运行样本迭代时,就像求解一个最优化算法一样。如果大家熟悉深度神经网络过程的话,基本上我们对这种贝叶斯神经网络可以完全对等地去实现。&/p&&br&&p&&strong&贝叶斯深度学习怎么用?&/strong&&/p&&br&&img src=&/v2-ffd028164faebbce7c3a7e71e9cd5669_b.png& data-rawwidth=&942& data-rawheight=&385& class=&origin_image zh-lightbox-thumb& width=&942& data-original=&/v2-ffd028164faebbce7c3a7e71e9cd5669_r.png&&&p&贝叶斯深度学习在什么地方可以用?我给大家看一些例子。在我们课题组里主要强调如何用非常少的标注数据进行有效的学习。在机器学习里边有一个大家研究很多的叫半监督学习(Semi—supervised Learning)的场景,它可以利用大量的未标注数据帮助从少量标注数据中学习分类器。技术细节我就不说了,来看看结果。这个红色框里面是我们做出的结果,比如说在 SVHN 的数据集上,我们大概用 1% 的训练数据就可以达到 5% 的错误率,这个是目前最佳的结果。&/p&&br&&p&因为我们是一个生成模型,所以我们还可以去生成新的样本,比如说我们可以生成二维的手写体字符。在一维上固定一个变量,调另外一个变量,生成你想要的某个类别或者某种风格的字符。&/p&&br&&img src=&/v2-f1dbe8e73cbdebf4d6e8d_b.png& data-rawwidth=&1301& data-rawheight=&412& class=&origin_image zh-lightbox-thumb& width=&1301& data-original=&/v2-f1dbe8e73cbdebf4d6e8d_r.png&&&p&这是更新的工作,我们是在生成对抗网络(GAN)上做的。大家知道 GAN,它的生成效果很好了。我们在小样本的学习下面也可以做非常好的效果,我们提出了一个 Triple GAN 的工作。在这个自然图片的数据集上,比之前大家做的各种 GAN 变种的结果显著要好(错误率更低)。大家同时可以看出来,这个生成结果和自然图片也非常接近了。&/p&&br&&img src=&/v2-0a432ed22a27acee8ae5f64373bdca09_b.png& data-rawwidth=&1091& data-rawheight=&382& class=&origin_image zh-lightbox-thumb& width=&1091& data-original=&/v2-0a432ed22a27acee8ae5f64373bdca09_r.png&&&p&下面一个例子是我前面提到过的——用贝叶斯方法做小样本学习。这是一个极端的例子,就是在训练的时候给它看一些基本的数据,将来在测试的时候会遇到新的类别(或概念),我们只给它看一个训练样例,然后希望它能够从中学出来一个贝叶斯程序,可以生成同一类的数据或者做识别。我们现在有一些在汉字上做的初步结果。给大家看一些例子,比如最上面给出了某一种字的一个样例,下面是生成出来的;基本上,大家能看出来和原始给的那个字的风格还是非常一致的,所以这个效果还是非常好的。一些技术细节我在这里就不详细说了。&/p&&br&&img src=&/v2-855ce59b59bd4e3fcbb12c949d9b5119_b.png& data-rawwidth=&1095& data-rawheight=&358& class=&origin_image zh-lightbox-thumb& width=&1095& data-original=&/v2-855ce59b59bd4e3fcbb12c949d9b5119_r.png&&&p&最后一个例子也是我前面讲的鲁棒的 Deep Learning。Deep Learning 有很多潜在攻击样本,我怎么让它变得更鲁棒?实际上,最近有一些工作显示使用贝叶斯推理可以让深度神经网络变得更鲁棒,比如:剑桥做的一个工作,这是我们复现出来的在一个数据集上的比较。这个测试数据集有一半是攻击样本、一半是正常样本。这个黑色的线是一个标准的神经网络,不用贝叶斯推理,它的正确率从 0.9 几(可能 0.97、0.98)一下子降到 0.6 几,降得非常严重。蓝色的线是贝叶斯神经网络,它可以做到更好,可以达到 75%、80% 左右的正确率,已经是非常不错的。右边的图是说你可以过滤掉多少对抗样本。大家可以看出来,这个蓝色的线,用贝叶斯网络可以帮助我们更好地识别对抗样本,提升鲁棒性。我们最近做了一个工作,结果是红色的线,能够更显著地识别 adversarial sample 和 normal sample,两个混在一起的时候,测试准确度能够显著地提升,实际上我们可以在一定条件下 达到图中的 Normal Accuracy。&/p&&br&&img src=&/v2-6b8fd330a86d9536acc2e90f4c987aca_b.png& data-rawwidth=&801& data-rawheight=&417& class=&origin_image zh-lightbox-thumb& width=&801& data-original=&/v2-6b8fd330a86d9536acc2e90f4c987aca_r.png&&&p&我们已经开源了珠算平台,现在我们把它当作是一个研究平台,也欢迎大家去尝试。我们在上面也开发了很多当前最佳的模型,包括经典的贝叶斯 logistic 回归、最新的贝叶斯神经网络、变分自编码器、GAN、主题模型 等等,我们自己也在不断做一些新模型。下面是开源的页面,大家可以在 GitHub 上找到。我们也写了一些 Online Documents,解释 API 怎么定义的,另外还有教程可以指导大家很快来实现比如我前面举例的网络模型。&br&&/p&&br&&img src=&/v2-5ac8f84cf_b.png& data-rawwidth=&1265& data-rawheight=&449& class=&origin_image zh-lightbox-thumb& width=&1265& data-original=&/v2-5ac8f84cf_r.png&&&p&特别感谢我们组的学生,这个项目主要是我的两个博士生 Jiaxin Shi(石佳欣)和 Jianfei Chen(陈键飞)主导的,贡献者还包括一些博士后和博士生以及本科生。这个项目也受到一些国家经费的支持,我们的合作者还有天工研究院、英伟达等等。&/p&&p&&img src=&/v2-fbd9b26ddd212ce90e38a4aff3f2c7c4_b.png& data-rawwidth=&843& data-rawheight=&296& class=&origin_image zh-lightbox-thumb& width=&843& data-original=&/v2-fbd9b26ddd212ce90e38a4aff3f2c7c4_r.png&&&b&机器之心整理&/b&&/p&
5 月 27-28 日,机器之心在北京 898 创新空间顺利主办了第一届全球机器智能峰会(GMIS 2017)。中国科学院自动化研究所复杂系统管理与控制国家重点实验室主任王飞跃为大会做了开幕式致辞。大会第一天,「LSTM 之父」Jürgen Schmidhuber、Citadel 首席人工…
&a href=&/topics& class=&internal&&话题广场&/a&在这里,电击蓝色字体就可以进入咯,赞我吧
在这里,电击蓝色字体就可以进入咯,赞我吧
已有帐号?
无法登录?
社交帐号登录
280 人关注
141 条内容
6877 人关注
225 条内容
218 人关注
427 条内容
14704 人关注
361 条内容
11240 人关注
773 条内容

我要回帖

更多关于 流放之路cdk格式 的文章

 

随机推荐