美文网首页
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