孰能浊以澄?静之徐清; 孰能安以久?动之徐生。 老子,《道德经》 计算机的核心部分称为处理器,它执行构成我们程序的各个步骤。 到目前为止,我们看到的程序都是让处理器忙碌,直到他们完成工作。 处理数字的循环之类的东西,几乎完全取决于处理器的速度。 但是许多程序与处理器之外的东西交互。 例如,他们可能通过计算机网络进行通信或从硬盘请求数据 - 这比从内存获取数据要慢很多。 当发生这种事情时,让处理器处
强化学习(RL)如今是机器学习的一大令人激动的领域,也是最老的领域之一。自从 1950 年被发明出来后,它被用于一些有趣的应用,尤其是在游戏(例如 TD-Gammon,一个西洋双陆棋程序)和机器控制领域,但是从未弄出什么大新闻。直到 2013 年一个革命性的发展:来自英国的研究者发起了 Deepmind 项目,这个项目可以学习去玩任何从头开始的 Atari 游戏,在多数游戏中,比人类玩的还好,它仅
自编码器是能够在无监督的情况下学习输入数据的有效表示(叫做编码)的人工神经网络(即,训练集是未标记)。这些编码通常具有比输入数据低得多的维度,使得自编码器对降维有用(参见第 8 章)。更重要的是,自编码器可以作为强大的特征检测器,它们可以用于无监督的深度神经网络预训练(正如我们在第 11 章中讨论过的)。最后,他们能够随机生成与训练数据非常相似的新数据;这被称为生成模型。例如,您可以在脸部图片上训
计算机科学领域过度痴迷于排序算法。根据 CS 学生在这个主题上花费的时间,你会认为排序算法的选择是现代软件工程的基石。当然,现实是,软件开发人员可以在很多年中,或者整个职业生涯中,不必考虑排序如何工作。对于几乎所有的应用程序,它们都使用它们使用的语言或库提供的通用算法。通常这样就行了。 所以如果你跳过这一章,不了解排序算法,你仍然是一个优秀的开发人员。但是有一些原因你可能想要这样: 尽管有绝大多数
我们知道如何使用训练数据将一个点划分为两类之一。 我们的分类只是对类别的预测,基于最接近我们的新点的,训练点中最常见的类别。 假设我们最终发现了我们的新点的真实类别。 然后我们会知道我们的分类是否正确。 另外,我们将会有一个新点,可以加入到我们的训练集中,因为我们知道它的类别。 这就更新了我们的训练集。 所以,我们自然希望,根据新的训练集更新我们的分类器。 本章将介绍一些简单的情况,其中新的数据会
在第一课中我们就已经说过 OpenGL 并不会直接处理 Windows 相关操作,这一部分功能都是由其他 API (如 GLX、WGL 等) 负责。为了简单起见我们使用了 GLUT 处理 Windows API 的调用,由于 GLUT 是一个跨平台的库,所以我们的程序也可以移植到不同的操作系统中。到目前为止我们的程序中都只使用了 GLUT 库,而现在我们将会介绍另外一个比较流行的库,这个库的功能和
今天来分享一下图,这是一种比较复杂的非线性数据结构,之所以复杂是因为他们的数据元素之间的关系是任意的,而不像树那样 被几个性质定理框住了,元素之间的关系还是比较明显的,图的使用范围很广的,比如网络爬虫,求最短路径等等,不过大家也不要胆怯, 越是复杂的东西越能体现我们码农的核心竞争力。 既然要学习图,得要遵守一下图的游戏规则。 一: 概念 图是由“顶点”的集合和“边”的集合组成。记作:G=(V,E)
官方网站上《10 Minutes to pandas》的一个简单的翻译,原文在这里。这篇文章是对 pandas 的一个简单的介绍,详细的介绍请参考:秘籍 。习惯上,我们会按下面格式引入所需要的包。
我们已经一起进行到这次讨论旅程的最后一个部分了。希望我们一起完成了对你有用的东西,包括了通过PHP的一些例子来介绍设计模式的概念和更有用的成果,比如测试驱动开发这样的更好的开发技术。 设计模式是你的便成工具包里面一个很有用的工具,用来处理一个复杂的设计问题。设计模式提供固定的,证明是正确的技术来帮助你使你的设计更灵活。使用设计模式还让你可以轻松地与其他的工程师进行轻松地沟通,因为设计模式的名字现在
第十七课:旋转 虽然本课有些超出OpenGL的范围,但是解决了一个常见问题:怎样表示旋转? 《第三课:矩阵》中,我们了解到矩阵可以让点绕某个轴旋转。矩阵可以简洁地表示顶点的变换,但使用难度较大:例如,从最终结果中获取旋转轴就很麻烦。 本课将展示两种最常见的表示旋转的方法:欧拉角(Euler angles)和四元数(Quaternion)。最重要的是,本课将详细解释为何要尽量使用四元数。 旋转与朝向
在jMonkeyEngine中,我们有3种实现特殊视觉效果的工具。 后期滤镜 FilterPostProcessor & Filter 场景处理器 SceneProcessor 粒子发射器 PraticleEmitter 后期滤镜 在游戏场景渲染完成后,我们可以使用滤镜(Filter)对画面进一步加工。在3D游戏中,下列效果通常都是用滤镜来实现的: 雾化(Fog) 马赛克(Mosaic) 玻璃(G
本章我们将学习如何在jME3中播放3D动画。 概述 3D动画一般使用Blender、Maya、3DS Max、ZBrush等专业工具制作。jME3不能用于制作3D动画,但它可以导入包含3D动画数据的模型,然后在游戏中播放。 根据游戏开发的一般需求,jME3.1目前支持3种动画: 骨骼动画(Skeleton Animation) 骨骼动画用于制作动画角色,可以表演出角色的各种行为,例如“行走”、“攻
在调试时,你应该区别不同类别的错误,才能更快地追踪定位: 语法错误是 Python 将源代码翻译成字节代码的时候产生的,说明程序的结构有一些错误。例如:省略了 def 语句后面的冒号会产生看上去有点重复的错误信息 SyntaxError: invalid syntax 。 运行时错误是当程序在运行时出错,解释器所产生的错误。大多数运行时错误会包含诸如错误在哪里产生和正在执行哪个函数等信息。例如:一
最常与面向对象编程联系在一起的语言特性就是 继承 。继承指的是在现有类的基础下进行修改,从而定义新类的能力。在本章中,我会用表示卡牌(playing cards)、一副牌(deck of hands)和牌型(poker hands)的类,来展示继承这一特性。 如果你不玩扑克牌,你可以阅读 http://en.wikipedia.org/wiki/Poker 了解一下,但这不是必须的;我会告诉你完成
本章将介绍“持久(persistent)”程序的概念,即永久储存数据的程序,并说明如何使用不同种类的永久存储形式,例如文件和数据库。 持久化 目前我们所见到的大多数程序都是临时的(transient), 因为它们只运行一段时间并输出一些结果,但当它们结束时,数据也就消失了。 如果你再次运行程序,它将以全新的状态开始。 另一类程序是 持久(persistent) 的:它们长时间运行(或者一直在运行)