击球手击出垒球,你会开始预测球的轨迹并立即开始奔跑。你追踪着它,不断调整你的移动步伐,最终在观众的一片雷鸣声中抓到它。无论是在听完朋友的话语还是早餐时预测咖啡的味道,你时刻在做的事就是在预测未来。在本章中,我们将讨论循环神经网络 -- 一类预测未来的网络(当然,是到目前为止)。它们可以分析时间序列数据,诸如股票价格,并告诉你什么时候买入和卖出。在自动驾驶系统中,他们可以预测行车轨迹,避免发生交通意
在本章中,我展示了上一个练习的解决方案。然后,你将编写代码来组合多个搜索结果,并按照它与检索词的相关性进行排序。 16.1 爬虫的答案 首先,我们来解决上一个练习。我提供了一个WikiCrawler的大纲;你的工作是填写crawl。作为一个提醒,这里是WikiCrawler类中的字段: public class WikiCrawler { // keeps track of where w
最近邻分类方法的动机是这样的,个体可能像最近的邻居。 从另一个角度来看,我们可以说一个类别的个体不像另一个类别中的个体。 机器学习为我们提供了一种有力的方法来发现这种相似性的缺乏,并将其用于分类。 它揭示了一种模式,通过一次检查一两个属性,我们不一定能发现它。 但是,我们可以从属性中学到很多东西。 为了了解它,我们将比较两个类中的属性分布。 让我们来看看 Brittany Wenger 的乳腺癌数
所谓 3D 拾取就是当我们用鼠标点击屏幕上显示的 3D 场景时,我们鼠标选中的那个像素能够映射到实际的 3D 场景中的相应图元上。这个功能对于那些强调交互性的应用程序十分有用,用户只需要进行点击(在 2D 屏幕上)就能这个被点击的位置映射到三维场景中的对象上。例如,你可以使用它来选择某个对象或者其一部分作为目标,并在之后对其进行进一步的操作。在这章的示例中,我们渲染了一些对象并且展示如何将被“选中
天空盒是用于增强场景表现力的一个常用技术,它一般通过在相机周围包裹一个纹理来实现。这个纹理通常是一些天空、山川或者摩天大楼等等,下面是游戏 Half-Life 中使用天空盒的例子: 天空盒的思想就是绘制一个大的立方体,然后将观察者放在立方体的中心,当相机移动时,这个立方体也跟着相机一起移动,这样相机就永远不会运动到场景的边缘。这与我们真实世界中的情况一样的,我们可以看见远处的天空接触到了地平线,但
聚光灯是第三个也是最后一个我们将要介绍的光源类型(至少在一段时间内)。他比平行光和点光源更加复杂,而本质上还是用到这二者的很多内容。我们需要设置聚光灯光源的位置,并且其光照强度随着和目标物距离的增加而减小(像点光源那样),而且他也要指向一个特定的方向(像平行光那样)。但是聚光灯新增了一个特性,它的光只分布在有限的圆锥形空间内并且不断减弱,而这个圆锥形空间随着随着与光源位置的增加,其而底部不断扩大。
当我们在计算环境光照的时候,唯一的要考虑的因素是光照强度;之后当我们计算到漫反射光照的时候,我们将光照的方向因素考虑进去了。镜面反射光包含这些因素,并且增加一个新的因素——观察者位置。这样做的原因是当光线以某一角度照射到一个平面上时,他会以相同的角度反射出去(在法线的另一边)。如果观察者刚好位于这条反射光线的线路上,那么他接受到的光照强度将大于远离这条线路的观察者。 镜面反射光的效果就是当观察者以
在这一节中我们将会介绍如何在保持深度外观的情况下将三维世界中的物体投影到二维平面上去。最有代表性的例子是:当我们站在一条笔直的马路的中间向前看时,我们会发现马路的两边会越来越靠近,并最终汇聚成一个点。这就是图形学中常说的透视投影。 为了实现上面的效果,在本节中我们需要生成一个投影矩阵,这个投影矩阵需要满足能够将所有的顶点都投影到范围位于 -1 到 1 之间的规范化空间中(normalizedspa
在前几章中我们学习了一些变换,通过它们我们能将3D世界中的物体灵活的变换到任意位置。之后我们还要学习两个变换(相机控制和透视投影),但是正如你可能已经猜到的,我们需要一个变换的组合。在很多情况下,你需要缩放物体以适应你的 3D 世界的尺寸,将其旋转到需要的方向,平移到某处等等。直到现在,我们每次都只能使用一个单一的变换。为了实现上述一系列的变换,我们需要用顶点坐标与第一个变换矩阵相乘,然后将前面的
到目前为止,本书介绍过的内容都是和解释器自带的数据结构打交道。我们的程序与外部的交互只是通过input、raw_input和print函数,与外部的交互很少。本章将更进一步,让程序能接触更多领域:文件和流。本章介绍的函数和对象可以让你在程序调用时存储数据,并且可以处理来自其他程序的数据。 11.1 打开文件 open函数用来打开文件,语法如下: open(name[, mode[, bufferi
之前看乙醇视频中提到,selenium 的ruby 实现有一个小后门,在代码中加上$DEBUG=1 ,再运行脚本的过程中,就可以看到客户端请求的信息与服务器端返回的数据;觉得这个功能很强大,可以帮助理解webdriver的运行原理。 后来查了半天,python并没有提供这样一个方便的后门,不过我们可以通过代理的方式获得这些交互信息; 一、需要安装java 虚拟机与selenium-server-s
学习unittest 很好的一个切入点就是从selenium IDE 录制导出脚本。相信不少新手学习selenium 也是从IED 开始的。 IDE学习参考: 菜鸟学自动化测试(一)--selenium IDE 借助IED 录制脚本 将脚本导出,保存为baidu.py ,通过python IDLE编辑器打开。如下: from selenium import webdriverfrom seleni
5、十进制数加调整指令DAA(Decimal Adjust After Addition) 该指令是用于调整AL的值,该值是由指令ADD或ADC运算二个压缩型BCD码所得到的结果。压缩型BCD码是一个字节存放二个BCD码,低四位和高四位都是一个BCD码。 其调整规则如下: 、如果AL的低四位大于9,或标志位AF=1,那么,AL=AL+6,并置AF=1; 、如果AL的高四位大于9,或CF=1,那么,
MFC提供了对数据库编程的强大支持。对于数据库的访问,MFC提供了两组类:ODBC(Open Database Connectivity)和DAO(Database Access Object)。利用这两个功能强大的类,用户可以方便的开发出基于ODBC或DAO的数据库应用。 这一讲将重点介绍下列内容: 数据库的基本概念 ODBC基本概念 MFC的ODBC类简介 CDatabase类 CRecord
最近项目赶的紧,歇了一个星期没写博客了,趁周末继续写这个系列。 先前我们讲的都是“线性结构”,他的特征就是“一个节点最多有一个”前驱“和一个”后继“。那么我们今天讲的树会是怎样的呢? 我们可以对”线性结构“改造一下,变为”一个节点最多有一个"前驱“和”多个后继“。哈哈,这就是我们今天说的”树“。 一: 树 我们思维中的”树“就是一种枝繁叶茂的形象,那么数据结构中的”树“该是怎么样呢?对的,他是一种