tensor理解

作者: yshi2017 | 来源:发表于2018-06-19 09:47 被阅读0次

    张量的数学含义是多维数组,标量(数字)可以看作是0维的张量。一维数组称为1维向量,二维数组称为矩阵。在神经网络学习中,几乎所有的数据都可以看作张量,如神经网络的权重,偏置等。

    ======================================

    一张黑白照片可以用2维张量表示,其中的每个元素表示图片上一个像素的灰度值。一张彩色图片则需要三维张量表示,其中两个维度为宽和高,另一个维度为颜色通道。

    ========================================

    tensorflow是一个通过图(graph)的形式来表述计算的编程系统,图中每一个节点为一种操作(operation),包括计算,初始化,赋值等。张量则为操作的输入和输出。

    ========================================

    把张量交给会话对象(Session)执行,就可以得到具体的数值。即在tensorflow中包含两个阶段,先以计算图的方式定义计算过程,再提交给会话对象,执行会话并返回结果。这是由于:tensorflow的核心不是用Python写的,每一步调用都需要函数库与python之间的切换,存在很大开销。而且tensorflow通常再GPU上面执行,如果每一次都自动执行的话,则GPU把大量资源浪费在多次接收和返回数据上,远不如一次性接收返回数据高效。例子:送外卖的先一次性点好菜谱,再让对方把饭菜做好后打包送来,让送餐的多次跑路不太合适。

    ========================================

    与sess.run()等效的语句是c.eval(Session = sess)。作为对象和参数,张量和会话刚好调了个位置。如果上下文只用到了一个会话,则可以用tf.interactiveSession()创建默认的会话对象,后面执行计算时无需再指定。

    ========================================

    另外,在先前的代码中,参数3和2都被固化在代码中。如果需要多次执行加法运算,我们可以用tf.placeholder(tf.int32)替代tf.constant,而在执行时再给参数赋值。

    ============================================

    另外一种方式是使用变量对象tf.variable。与tf.constant函数创建的张量不同,变量对象支持参数的更新,不过这也意味着依赖更多的资源,与会话绑定得更紧。通常调用tf.global_variables_initializer函数一次性初始化所有变量。

    相关文章

      网友评论

        本文标题:tensor理解

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