手写图形引擎!03 提纲挈领

图形引擎是一个挺复杂的由多个处理流程构成的系统。当然,我们这里不讨论基于物理的渲染引擎,仅仅讨论能够把三维矢量表示的一些几何元素,包括材质、纹理等元素根据一定的规则渲染成光栅化图像,或者说是位图的程序。

我本人并没有系统地学习过计算机图形学,写这个东西只能算是兴趣使然。从新人的角度来说,从网上查阅很多图形学的资料让我处于很长时间的困惑中,诸如对一些实现细节的纠结,或者是应该怎么做,大家都是怎么做的等等。其实这些并不是特别重要。如果你只是想了解了解背后的原理,或者只是想写一个有点复杂的玩意儿(和几十行的简单程序相比),那么在了解了一些必要的知识之后就可以动手开始实现了。在起点畏缩,迟迟不迈出第一步,那么之后的行动也遥遥无期。开始写,实现了一些之后,根据已有的经验再修改才是有效率的做法。

当然,对于刚刚接触图形学的人来说(我也是其中之一),其实可以不必拘泥于“实现”一遍底层算法,或许更好的做法是学习使用一些框架或者已有的引擎,或者使用一些支持shader的软件,反复把玩。这样做可以加深对领域内应用、场景、需求的了解,帮助你走上正轨。

这次主要写写这么几个内容:

  1. 图形引擎的几个基本功能和任务
  2. 我应当怎么实现??从哪里开始?

To What Extent Can We Train Neural Networks

神经网络的训练算法起源于很简单的思路:使用梯度下降方法优化参数,使得代理函数在观测集上整体最小。这种朴素直接的思想就是神经网络优化算法的根源。这种算法被包含在各大深度学习框架中,并被广泛使用。

ML

编译器,符号表和代码生成

符号表在编译器语义分析过程中承担了重要的作用。通常符号表用于指明标识符(符号)的一些基本属性,诸如它们的名字,类型,域,重定位信息(地址)等。这里讨论一个具体的符号表实现,与它在编译器中承担的任务。

对一个支持算术逻辑混合运算和短路的语言编译器的一点思考

三个多月没更新了。这个学期忙了不少东西,虽然结果如何还没见分晓。过往的五个学期不太理想的成绩直接让我在这个学期拼死拼活地争取保研名额。以上都是闲聊。

如标题所说,编译原理课程要求自己设计、编写出一个编译器。当然,具体支持的文法和功能并没有严格的规定。我自己写的编译器所支持的语言能够编译类似于C语言的算术和逻辑表达式。词法,句法分析还算顺利,也构建出了抽象语法树。然而,代码生成,尤其是针对支持逻辑运算短路、逻辑算术运算混合的表达式的语言生成代码,可能是一个细节非常繁杂的任务。

Faster R-CNN 笔记

Faster R-CNN的学习笔记,备忘。之后可以用Tensorflow来实现一个。主要内容

  1. Faster R-CNN结构简述
  2. 训练和实现细节
  3. PASCAL VOC数据集的处理