美文网首页
2018-12-29

2018-12-29

作者: ab02f58fd803 | 来源:发表于2018-12-29 15:18 被阅读0次

    一 、tensorflow=tensor(张量)+flow(流)  (代码+演示) 

    1、tensor(张量)    

         1.1 定义:可以简单的理解为多维数组(CS角度),更加专业定义(1) ,更加形象化理(2)

               CS角度:A tensor is a generalization of vectors andmatrices to potentially higher   dimensions. 

               1)、形式上:表明了在tensorflow运算中运用了张量(tensor)这样的数据结构,所有的    数据通过张量表示。           

               2)、功能上:简单理解为多维数组(类比C/C++,python numpy) 

                   0阶张量:理解表示标量(scalar),也就是一个具体数,注(也可以是字符串类型)。

                  1阶张量:理解表示向量(vector),也就是一维数组。

                  ……

                   N阶张量:理解表示一个n维数组。      

                  但是,不同之处在于:           

                   1)、类似数组,但实现方式不是直接采用数组,而只是对Tensorflow运算结果的引用                2)、运算过程没有真正保存数字,保存的是计算数据的过程。    

            1.2 实践(实践是深刻体会知识的源泉)      

                   1)、numpy ( in Python 3.6.4 Shell)        

                       >>> import numpy as np

                       >>> a=np.array([1,2,3,4])

                       >>> aarray([1, 2, 3, 4])                                   ( 1)

                       >>> a.shape(4,)

                      >>> type(a)

                            <class 'numpy.ndarray'>                      

               2)、tensorflow   (in Python 3.6.4 Shell)        

                      >>> import tensorflow as tf        

                     >>> a =tf.constant([1.0,2.0],name = 'a')       

                    >>> a

                           <tf.Tensor 'a:0' shape=(2,)dtype=float32>               (2)       

                    >>>b = tf.constant([5.0,6.0],name = 'b')          

                    >>> result1 = a+b

                   >>> result2 =tf.add(a,b,name="add")

                   >>> result1

                           <tf.Tensor 'add_3:0' shape=(2,)dtype=float32>

                  >>> result2

                          <tf.Tensor 'add_4:0' shape=(2,)dtype=float32>   

              (3)注 

                  1、从(1)和(2)对比,张量(tensor)可以类比为数组,可是又有和数组本质的不同。 

                  2、从(2)可知,一个张量中有三个不同属性:名字(name),维度(shape)和类型(type),应  当理解,名字是这个张量的唯一标识符(也有表明当前张量的计算方式),维度不再说明,类比numpy。     

                   3、类型重点说明,注意类型不匹配情况。

                     例子如下,     

                     >>> c= tf.constant([3,4])

                    >>> c

                           <tf.Tensor 'Const:0' shape=(2,)dtype=int32>

                   >>> c+a          

                         TypeError: Input 'y'of 'Add' Op has type float32 that does not match type int32 of  argument 'x'.     主要还是表明类型不匹配。Tensorflow数据类型(3)4、+ 和tf.add() 等同   

             1.3 张量的使用       

                   1)、对中间结果的引用,比如:     

                    >>>consta = tf.constant([1,2,3,4],name='consta')

                   >>> constb =tf.constant([5,6,7,8],name='constb')

                   >>> consta

                      <tf.Tensor 'consta:0' shape=(4,)dtype=int32>

                  >>> result =consta+constb

                  >>>result=tf.constant([1,2,3,4],name='consta')+tf.constant([5,6,7,8],name='constb')    

                 1)  对于黑体而言,前者代码可阅读性更高。     

                 2)计算图构造完成后,张量可以获得计算的真正数据。      

                  >>>tf.Session().run(result)array([ 6, 8, 10, 12])

       2、flow(流):直观表达张量之间相互转化过程。 

    参考文章

    (1)、张量维基百科

    (2)、知乎回答

    (3)、TensorFlow官网

    (4)、《TensorFlow 实战Google深度学习框架》                                          

                                                                                                        2018/12/29

       ---------------知识源于实践,行动丰富大脑

    -

    相关文章

      网友评论

          本文标题:2018-12-29

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