美文网首页嵌牛IT观察
迈向深度学习第一步!零基础深度学习:计算图

迈向深度学习第一步!零基础深度学习:计算图

作者: 刘璇光 | 来源:发表于2018-11-06 19:43 被阅读4次

      姓名:刘璇光  学号:15020150039

      转载自: 知乎   ,有删节

    【嵌牛导读】:入门深度神经网络的数学和算法基础。

    【嵌牛鼻子】:深度学习  计算图

    【嵌牛提问】深度学习的第一步是什么内容?

    【嵌牛正文】:

    我们从计算图(computational graph)的理论开始,因为神经网络本身是计算图的一个特殊形式。

    Computational graph 是有向图,其中的节点都对应着 操作(Operation) 或者 变量(Variable)。

    Variable 可以把自己的值递送给 Operation,而 Operation 可以把自己的输出递送给其他的 Operation。这样的话,计算图中的每一个节点都定义了 graph 中的 Variable 的一个函数(本句意义可以参照“函数”的定义,大意为一种输入对应一种输出)。

    递送入节点的、从节点中传出的值,被称为 tensor,这是个用于多维数组的词。因此,它包括标量、矢量、矩阵,也包括高阶的张量(tensor)。

    下例中的 computational graph 把两个输入 x 和 y 相加,计算得总和 z。

    本例中,x 和 y 是 z 的输入节点,z 是 x 和 y 的消耗者。z 因此定义了一个函数,即:

    当计算变得越来越复杂时,computational graph 的概念就越显得重要了。比如,下面的 computational graph 定义了一个仿射变换:

    操作 Operations

    每一个 Operation 有三项特征:

    一个计算函数:用于计算对于给定的输入,应当输出的值

    输入节点(node):可有多个,可以是 Variable 或者其他 Operation

    consumer:可有多个,将 Operation 的输出作为它们的输入

    加法

    矩阵乘法

    变量 Variables

    在仿射变换的 graph 中,x 与 A 和 b 有本质的不同。x 是 operation 的输入,而 A 和 b 是 operation 的参数,即它们是 graph 本身固有的。我们把 A 和 b 这样的参数称为 variable。

    Graph类

    最后,我们需要一个把所有 operation, placeholder 和 variable 包含在一起的类。创建一个新的 graph 时,可以通过调用 as_default 方法来设置它的 _defaultgraph。

    通过这个方式,我们不用每次都传入一个 graph 的引用,就可以创建 operation, placeholder 和 variable。

            为了计算 operation 所代表的函数,我们需要按正确的顺序进行计算。比如,如果中间结果 y 还没计算出来,我们就不能先计算 z。因此我们必须确保 operation 执行顺序正确,只有这样才能确保在计算某个 operation之前,它所需要的输入节点的值都已经计算好了。这点可以通过 post-order traversal 实现。

    相关文章

      网友评论

        本文标题:迈向深度学习第一步!零基础深度学习:计算图

        本文链接:https://www.haomeiwen.com/subject/maqpxqtx.html