<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[汪星人来地球的博客]]></title><description><![CDATA[数学才是人工智能的正确打开方式]]></description><link>https://blog.youkuaiyun.com/hedan2013</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hedan2013]]></copyright><item><title><![CDATA[多元函数第八：连通性]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/107299909</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/107299909</guid><author>hedan2013</author><pubDate>Sun, 12 Jul 2020 17:02:28 +0800</pubDate><description><![CDATA[定义： 设S0S_0S0​是一个拓扑空间。我们说集合S⊂S0S\subset S_0S⊂S0​是非连通的（disconnected），如果存在相对于SSS的开集A和B使得S=A∪BS=A\cup BS=A∪B 且 A∩B=∅A\cap B=\emptysetA∩B=∅。如果SSS不是非连通的，则称SSS是连通的（connected）。
如果S0S_0S0​是连通的，我们称S0S_0S0​是连通的拓扑空间。
例. 设S0=RS_0=\mathbb{R}S0​=R是实数拓扑空间。那么，集合S=[0,1]∪[2,]]></description><category></category></item><item><title><![CDATA[多元函数第七：相对拓扑]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/105340769</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/105340769</guid><author>hedan2013</author><pubDate>Mon, 06 Apr 2020 15:00:37 +0800</pubDate><description><![CDATA[一般拓扑学，最重要的作用，是将邻域的概念进行抽象。这样的好处是使得连续函数的性质得以被最大限度地推广。我们在连续函数（1）中已经说明了，如何通过邻域来定义连续函数。因此，对邻域概念的推广，本质上是对连续函数概念的推广。连续函数（1）中的邻域是通过欧式球来定义的，由此得到的拓扑称为是欧式拓扑。由欧式拓扑推广的一个最直接的拓扑，应该是相对拓扑。相对拓扑的概念，可能很多人觉得陌生，但是由它得到的性质，却...]]></description><category></category></item><item><title><![CDATA[TensorFlow源码分析（10）：TensorFlow的Device类与分布式计算集群]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/104239127</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/104239127</guid><author>hedan2013</author><pubDate>Sat, 22 Feb 2020 10:26:07 +0800</pubDate><description><![CDATA[文章（7）介绍的DeviceBase类是TensorFlow设备的基类，它提供了CPU，GPU管理需要的基本数据结构。Device类在DeviceBase的基础上，添加了一些新的数据结构，这些数据结构覆盖了内存，显存管理，线程同步，远程调用等功能。粗略说来，DeviceBase专注于单个设备的管理，而Device类也关注多设备协作。

首先看Device类的构造函数，路径为tensorflow/c...]]></description><category></category></item><item><title><![CDATA[TensorFlow源码分析（9）：Proto Buffer生成的C++类]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/104192883</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/104192883</guid><author>hedan2013</author><pubDate>Thu, 06 Feb 2020 12:23:49 +0800</pubDate><description><![CDATA[文章（8）中提到，Proto Buffer提供了一个工具，可以为不同编程语言，自动生成支持Proto Buffer协议的数据类型。本文继续以DeviceAttributes类为例，介绍C++的Proto Buffer类。

默认情况下，Proto Buffer生成的C++类都定义在.pb.h文件中。TensorFlow也沿用了这一规则。DeviceAttributes类定义在core/framew...]]></description><category></category></item><item><title><![CDATA[TensorFlow源码分析（8）：Proto Buffer简介]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/104086224</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/104086224</guid><author>hedan2013</author><pubDate>Sun, 26 Jan 2020 11:53:58 +0800</pubDate><description><![CDATA[TensorFlow除了大量使用Eigen和CUDA等计算库函数之外，还大量使用了Proto Buffer。Proto Buffer是一个数据传输协议，它可以将C++，Python和Java创建的对象序列化为二进制文件。这样，我们可以很轻松地实现在不同的设备上运行的用不同编程语言实现的不同进程之间，实现数据传送。

但是，并非所有的对象，都可以用Proto Buffer传输。要使用Proto Bu...]]></description><category></category></item><item><title><![CDATA[TensorFlow源码分析（7）：TensorFlow的DeviceBase类]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/104074559</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/104074559</guid><author>hedan2013</author><pubDate>Thu, 23 Jan 2020 13:33:34 +0800</pubDate><description><![CDATA[在文章（5）中说过，TensorFlow在定义设备的时候，不是把它们分成CPU、GPU、TPU设备等类别，而是分成本地设备和远程设备这两个类别。这样的分类方式，也有其方便之处。因为有许多的运算，需要CPU和GPU协同工作。如果强硬地把它们放在两个类中，会带来许多麻烦。而分成本地设备和远程设备，实现逻辑就非常清晰明了。本地设备只需调用底层的库函数（如Eigen, CUDA，SYCL, OpenCL等...]]></description><category></category></item><item><title><![CDATA[TensorFlow源码分析（6）：Eigen的Simple Thread Pool实现原理]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/103807170</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/103807170</guid><author>hedan2013</author><pubDate>Tue, 07 Jan 2020 08:21:30 +0800</pubDate><description><![CDATA[前文讲过，TensorFlow的多线程机制是基于Eigen库。因此，在继续研究TensorFlow代码之前，有必要研究一下Eigen库的多线程实现。

相关的代码参见https://github.com/libigl/eigen/tree/master/unsupported/Eigen/CXX11/src/ThreadPool。



在Eigen库中，实现了两种线程管理方式，即NonBloc...]]></description><category></category></item><item><title><![CDATA[TensorFlow源码分析（5）：TensorFlow的设备类型]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/103686305</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/103686305</guid><author>hedan2013</author><pubDate>Tue, 24 Dec 2019 17:13:23 +0800</pubDate><description><![CDATA[文章（4）简要介绍了OpContextConstruction对象的成员变量。从本文开始，对这些成员变量进行详细分析。首先需要分析的是设备类型和设备这两个对象。

TensorFlow关于设备类型的定义非常简单。它定义在tensorflow/core/framework/types.h中。


class DeviceType {
 public:
  DeviceType(const char*...]]></description><category></category></item><item><title><![CDATA[TensorFlow源码分析（4）：OpKernelContruction类的构造函数]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/103578076</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/103578076</guid><author>hedan2013</author><pubDate>Tue, 17 Dec 2019 11:57:40 +0800</pubDate><description><![CDATA[在文章（2）中，介绍了ConstantOp类的构造函数。构造函数中唯一的一个参数是OpKernelConstruction类型的对象。这个对象包含了操作类需要的所有输入，参数以及运行环境。它定义在tensorflow/core/framework/op_kernel.h文件中。OpKernelConstruction类的成员函数比较多，无法在一篇文章中一一列举。本文先从它的构造函数入手，分析它的成...]]></description><category></category></item><item><title><![CDATA[TensorFlow源码分析（3）：ConstantOp 类的Compute函数]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/103437109</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/103437109</guid><author>hedan2013</author><pubDate>Sat, 07 Dec 2019 17:09:36 +0800</pubDate><description><![CDATA[在文章（2）中分析了ConstantOp类的构造函数。本文介绍Compute函数。ConstantOp类的Compute函数，可以说是非常简单，因为构造函数已经几乎将所有的工作都完成了。Compute函数的定义在tensorflow/core/kernels/constant_op.cc文件中。


void ConstantOp::Compute(OpKernelContext* ctx) {
...]]></description><category></category></item><item><title><![CDATA[TensorFlow源码分析（2）：ConstantOp类的构造函数]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/103373901</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/103373901</guid><author>hedan2013</author><pubDate>Tue, 03 Dec 2019 21:53:11 +0800</pubDate><description><![CDATA[在文章（1）中，我们说到TensorFlow的操作类中，最重要的两个函数是构造函数和Compute函数。这篇文章，先介绍ConstantOp类的构造函数。它定义在tensorflow/core/kernels/constant_op.cc文件中。


ConstantOp::ConstantOp(OpKernelConstruction* ctx)
    : OpKernel(ctx, Stri...]]></description><category></category></item><item><title><![CDATA[TensorFlow源码分析（1）：ConstantOp 创建常量Tensor]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/103284572</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/103284572</guid><author>hedan2013</author><pubDate>Wed, 27 Nov 2019 22:56:50 +0800</pubDate><description><![CDATA[由于项目的原因，最近在学习TensorFlow的源码。刚面对TensorFlow源码时，遇到各种基本概念，千头万绪，无处着手。于是思虑许久，觉得应该先自底向上，从具体的操作开始，理清基本的概念和数据结构。有了一定的积累之后，再自顶向下，提纲挈领，通其概要。这样或许才是最高效的学习方法。

循着这样的思路，我选择了TensorFlow中最简单的一个操作，即ConstantOp作为切入点。顾名思义，C...]]></description><category></category></item><item><title><![CDATA[多元函数第六：连续函数（6）Bolzano-Weierstrass 波尔查诺-维尔斯特拉斯定理  聚点与列紧集]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/100608910</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/100608910</guid><author>hedan2013</author><pubDate>Sun, 03 Nov 2019 17:27:05 +0800</pubDate><description><![CDATA[记得我上研究生时，老师给我科普的第一个数学概念就是聚点，从此踏上了数学的不规律。所以，重温这部分知识，还是难掩激动。与聚点相对应的概念，是孤立点。首先给出这两个概念的严格定义。
定义 给定Rn\mathbb{R}^nRn上的点集AAA，我们说x∈Rnx\in\mathbb{R}^nx∈Rn是AAA的一个孤立点，如果存在xxx的邻域UUU满足U∩A={x}U\cap A=\{x\}U∩A={x}。
...]]></description><category></category></item><item><title><![CDATA[多元函数第六：连续函数（5）康托尔（Cantor）闭集套定理]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/100390500</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/100390500</guid><author>hedan2013</author><pubDate>Wed, 04 Sep 2019 18:49:36 +0800</pubDate><description><![CDATA[熟悉缠中说禅的股民，对闭区间套定理一定不会陌生。闭区间套定理是实数集上序列收敛的基本定理，它的发现者是天才数学家康托尔（Cantor）。康托尔是现代公理化集合论的奠基者。与许多的天才理论一样，他的集合理论在提出之初，饱受学术界诟病。因为他构造集合的很多方法，需要执行无限步，这很难被保守派的学者们接受。其实，世上从来不缺乏天才科学家的科学理论，可是科学的进展之所以曲折而缓慢，因为有太多太多像高斯这样...]]></description><category></category></item><item><title><![CDATA[Holder不等式 Minkowski不等式]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/100534943</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/100534943</guid><author>hedan2013</author><pubDate>Wed, 04 Sep 2019 18:29:41 +0800</pubDate><description><![CDATA[著名柯西-施瓦茨不等式是证明二范数三角不等式的重要工具。Holder不等式是柯西不等式的推广，它是证明ppp范数三角不等式的重要工具。
定义 Rn\mathbb{R}^nRn空间上的ppp范数∣⋅∣p|\cdot|_p∣⋅∣p​定义为
∣x∣p=(∑i=1n∣xi∣p)1/p。|x|_p=(\sum_{i=1}^n |x_i|^p)^{1/p}。∣x∣p​=(i=1∑n​∣xi​∣p)1/p。
这...]]></description><category></category></item><item><title><![CDATA[多元函数第六：连续函数（4）柯西收敛定理]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/100174880</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/100174880</guid><author>hedan2013</author><pubDate>Sat, 31 Aug 2019 17:46:39 +0800</pubDate><description><![CDATA[文章写到这有点跑题。标题是连续函数，其实都在讲序列的连续性。可是，既然都写成这样子，也懒得管它了，干脆将错就错，继续在羊头下卖狗肉。
柯西收敛定理，是非常重要的定理。在泛函分析中，我们把这个定理当做是完备空间的公理来使用。一个满足柯西收敛定理的度量空间，我们称作是完备空间。而完备空间，是我们在泛函分析中研究函数连续性的基础。
首先定义柯西序列。
定义 我们说序列{xm}⊂Rn\{x_m\}\sub...]]></description><category></category></item><item><title><![CDATA[多元函数第六：连续函数（3）单调有界收敛定理]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/100116518</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/100116518</guid><author>hedan2013</author><pubDate>Thu, 29 Aug 2019 22:53:26 +0800</pubDate><description><![CDATA[连续函数的分量连续性质，让我得以将数学分析研究的一元函数的性质，推广到多元函数。因此，我们有必要回顾一下一元函数的一些性质。一般地，我们有两种定义连续函数的性质。一种是利用ϵ\epsilonϵ-δ\deltaδ语言定义，一种是利用序列极限定义。在一元函数中，这两种定义是等价的。同时，利用分量连续的性质，不难证明这两种定义在多元函数中也是等价的。因此，研究函数的连续性，一个躲不开的问题，是序列的极限...]]></description><category></category></item><item><title><![CDATA[多元函数第六：连续函数（2）分量连续]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/89743583</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/89743583</guid><author>hedan2013</author><pubDate>Sun, 19 May 2019 15:16:00 +0800</pubDate><description><![CDATA[一般的多元函数，是从Rr\mathbb{R}^rRr到Rn\mathbb{R}^nRn的函数。要研究函数fff的连续性，需要研究Rn\mathbb{R}^nRn空间的极限。特别地，当n=1n=1n=1时，函数fff是一个向量值函数，也即fff将一个向量映射成一个实数值。向量值函数，是多元函数中非常基本的函数。因为向量值函数的很多性质，可以从数学分析研究的一元函数推导而来。例如，假设fff是从Rr\...]]></description><category></category></item><item><title><![CDATA[多元函数第六：连续函数（1）极限与连续]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/89299506</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/89299506</guid><author>hedan2013</author><pubDate>Fri, 26 Apr 2019 12:30:01 +0800</pubDate><description><![CDATA[有了前面的基础，终于可以进入正题，研究多元函数本身了。分析学研究的基础是极限，而与极限密切相关的一个概念是连续。数学分析中的连续，是通过邻域定义的。在实数集R\mathbb{R}R，点xxx的邻域是包含xxx的一个开区间。将其扩展为Rn\mathbb{R}^nRn，点xxx的邻域是包含xxx的开集。开集的形状是千奇百怪的，为了简化，在欧式空间中，我们说xxx的邻域是以xxx为球心的开球。如果对拓扑...]]></description><category></category></item><item><title><![CDATA[多元函数第五：拓扑初步（4）闭包]]></title><link>https://blog.youkuaiyun.com/hedan2013/article/details/89019970</link><guid>https://blog.youkuaiyun.com/hedan2013/article/details/89019970</guid><author>hedan2013</author><pubDate>Sun, 07 Apr 2019 11:31:19 +0800</pubDate><description><![CDATA[在拓扑初步2中，我们总结了开集闭集与边界的关系。开集是不包含任何边界点的集合，这由定义可以得到。而闭集是开集的补集，因此它必然包含所有边界点。 同时，我们也可以很直接地推得，任何包含所有边界点的集合都是闭集。这样，我们就得到了一种构造闭集的重要手段——闭包。
定义 记集合SSS的闭包为cl(S)=S∪Bd(S)cl(S)=S\cup Bd(S)cl(S)=S∪Bd(S).
命题 任何集合SSS是闭...]]></description><category></category></item></channel></rss>