0%

我们需要从原始文本到模型可用的训练语料,在深度学习和 NLP 任务中,我们不能直接把一段中文扔给 Word2Vec 模型。模型无法理解“我爱人工智能”,它只能理解经过切分、清洗后的词序列。在 Word2Vec 出现之前,计算机会觉得“苹果”和“梨”完全没关系,就像“苹果”和“汽车”一样没关系。 Word2Vec 的出现,让计算机第一次“懂了”:苹果和梨差不多,但跟汽车差很远。由此,我们引入了Word2Vec,Word2Vec 是一种把“词”变成“向量坐标”的技术,并且让意思相近的词,在数学空间里靠得很近。

首先想一个问题:计算机需要怎样才能理解词语?在人类世界里,我们能轻易理解“国王”和“女王”的关系,就像“男人”和“女人”的关系一样。但计算机如何理解这种微妙的语言关系呢?答案是:将词语转换成数字,也就是——词向量(Word Vector)。现在带你了解目前最经典的词向量模型——Word2Vec,并探讨其核心技术中一个非常关键的工程优化问题:Softmax 加速。

使用FastAPI在CPU密集型任务下实现多进程处理,在现代 Web 应用开发中,FastAPI 因其高性能和易用性而广受欢迎。然而,当涉及到CPU密集型任务时,如数据处理、图像处理或科学计算,单线程的异步处理可能并不适用。本文将探讨如何在FastAPI中使用多进程来处理这些任务,以充分利用多核CPU的能力。

在机器学习的现实应用中,我们往往面临“理想很丰满,现实很骨感”的局面:期望拥有海量的高质量数据,实际上却充满了标注不一致、含噪声的普通数据,甚至大量无标签数据。如何利用有限的数据训练出高效的模型?本文重点探讨迁移学习(Transfer Learning)、在线学习(Online Learning)、半监督学习(Semi-Supervised Learning)以及混合模型(Hybrid Models)的组合策略。

到目前为止,我们已经成功地实现了一些基本的三维渲染功能。我们从最基础的模型加载开始,接着实现了线段绘制,然后进行了三角形光栅化,涉及了平面着色、光照模型与背面剔除。还使用了Z-Buffer算法处理了隐藏面消除问题,以及成功地将纹理贴在了模型上。使用了三种着色方法——Flat Shading、Gouraud Shading、Phong Shading进行了片元着色。已经对渲染流程有了一个大致的理解。但是,随着我们不断地添加新的功能,我们的代码变得越来越复杂。为了使其更加模块化,更易于理解和扩展。我们将会把相关的功能进行归类,将复杂的功能分解为更小的、更易于管理的部分,为我们接下来的章节打好基础。

在之前的旅程中,我们已经成功地通过Z-Buffer算法已经很完美的处理了嘴唇凹进去的阴影面缺显示在上层的问题,并且把纹理贴在了模型上,达到了我们期望的基本效果。但是我们一直都是从正面视角去观察这个模型,既然是一个渲染引擎,当然也要能切换各个角度去渲染模型,所以本篇笔记的核心内容是理解和掌握透视投影的原理,以及如何利用坐标系变换的思想去推导视图变换矩阵,从而实现移动相机从其他角度渲染模型。对了还有实战使用三种着色方法(Flat Shading、Gouraud Shading、Phong Shading)进行片元着色。

Z-Buffer算法是计算机图形学中常用的一种隐藏面消除(Hidden Surface Removal)的算法。在渲染3D图形时,有些物体会遮挡住其他物体,使得它们在2D视图中不可见。Z-Buffer算法就是用来确定哪些物体在视图中是可见的,哪些是被遮挡的。上一节中我们虽然渲染出了模型,但是嘴唇凹进去的阴影面缺显示在上层,本次就拿Z-Buffer算法来处理这个问题。

本节是PyTinyRenderer的第二节,可以把本系列的文章看成是PyTinyRenderer的工程介绍文档,而不是TinyRenderer的Wiki翻译,其实尝试过翻译,但是我发现有时候翻译并不能清晰地表达我的想法,尤其是一些代码上的细节问题,对照原本的C++工程要复现的话需要做很多工作,所以本系列的核心目的也是能够让读者能轻易的复现TinyRenderer这个工程。本节主要实现的部分是三角形光栅化、涉及平面着色、光照模型与背面剔除。