zoukankan      html  css  js  c++  java
  • (转)tensorflow简介与结构介绍

    1.基础知识

    """
    tensorflow前端系统:定义程序的图结构,主要是利用一些API实现
    tensorflow后端系统:运算图结构
    numpy的reshape,在原始数据做修改,并没有创建新的数据对象
    1、安装:按照官方文档安装
            a)安装python,pip
            b)升级 python -m pip install --upgrade pip
            c)win10安装CPU版本tensorflow ,pip install https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.12.0-cp36-cp36m-win_amd64.whl
    2、报警告1:FutureWarning: Conversion of the second argument of issubdtype from
        解决方法:pip install h5py==2.8.0rc1
       报警告2:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA 
        解决方法:
                import os
                os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
    3、tensorflow结构
        椭圆代表张量,简称tensor:tensorflow中所有的数据都封装在tensor中
        方块,简称operation(op):专门运算的操作节点,所有的操作都是op
        图(graph):整个程序的结构
        会话(Session):运算程序的图
            
    4、a)图:运行程序的结构
        图默认已经注册,一组表示 tf.Operation计算单位的对象和tf.Tensor。表示操作之间流动的数据单元的对象
        获取调用:
                tf.get_default_graph()
                op、sess或者tensor 的graph属性
        图的作用:主要给程序分配内存
    
        图的创建:
            1、创建默认的图:graph = tf.get_default_graph()
            2、自定义图: g = tf.Graph()
            
        b)op:只要使用tensorflow的api定义的函数都是OP
        
        c)张量(tensor):就指代的是数据,op是tensor的载体
        
        d)会话(Session):相当于桥梁,将图和计算资源连接起来
            会话作用:
                    1、运行图的结构
                    2、分配资源计算
                    3、掌握资源(变量的资源,队列,线程)
            
            注意:一个会话只能运行一个图结构 ,但可以在Session中指定图去运算
            查看会话的资源情况:tf.Session(config=tf.ConfigProto(log_device_placement=True))
            启动会话:sess.run()
            关闭会话:sess.close()
        
            启动会话(sess.run()):
                1、run()中的参数必须是tensor或者op类型
                2、如果变量想转换为tensor类型,可以和tensor做运算,提升数据类型
                3、实时的提供数据进行训练,feed_dict与placeholder结合使用
                4、placeholder是一个占位符
                
            Session一般返回异常值:
                1、RuntimeError:如果它Session处于无效状态(例如已关闭)。
                2、TypeError:如果fetches或feed_dict键是不合适的类型。
                3、ValueError:如果fetches或feed_dict键无效或引用 Tensor不存在。
    
    5、张量(tensor):是tensorflow基本的数据格式。类似于numpy
        张量的阶和数据类型: 包含:name,shape,dype   
        张量的属性:graph,op,name,shape
        张量形状表示:
            0维:()   1维:(5)  2维:(5,6)    3维:(2,3,4)
        张量形状:包含动态形状和静态形状
                1、动态形状:一种描述张量在执行过程中的一种形状
                        tf.reshape:创建一个具有不同形状的新张量
                2、静态形状:创建一个张量,初始状态的形状
                        tf.Tensor.get_shape:获取静态形状
                        tf.Tensor.set_shape():更新tensor对象的静态形状
                注意:1、静态形状固定了,就不能再次设置形状,只能使用动态形状,但会创建一个新的张量
                      2、动态形状改变,数据数量一定要匹配            
     
    6、运算API:正太分布主要通过平均值和标准差进行表示
        1、生成张量:tf.zeros() 、tf.ones() 、tf.constant()
        2、随机值张量:
                    正太分布(高斯分布)随机值:tf.random_normal()
                    截断的正太分布(高斯分布)随机值:tf.truncated_normal()
        3、张量数据类型变换:
                tf.cast(x,dtype) 万能转换类型
                tf.squeeze()
        4、拼接:tf.concat(values,axis)
        
    7、变量:tf.Variable(),是一种OP,是一种特殊的张量,能够进行存储持久化,他的值就是张量,默认被训练
            1、变量必须都初始化,且要在session中运行 tf.global_variables_initializer()
    
    8、视图(tensorboard):首先将程序图结构序列化成一个event文件,然后通过tensorboard读取这个event文件
            1、tf.summary.FileWriter("",graph=)
                SCALARS:显示0维读值,如准确率,损失值
                GRAPHS:显示程序图图结构
                HISTOGRAPHS:高维的值,如权重,偏置
            2、报错:No dashboards are active for the current data set
                原因:因为没有读取到event文件,所以检查运行语句中logdir是否正确: tensorboard --logdir="./tmp/"
    
    """

    2.、代码

    # coding = utf-8
    import tensorflow as tf
    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
    
    #变量op
    def vari():
        a = tf.constant([1,2,3])
        var = tf.Variable(tf.random_normal([2,3],mean=0.0,stddev=1.0))
        print(a,var)
        init_op = tf.global_variables_initializer() #变量初始化
        with tf.Session() as sess:
            sess.run(init_op)  #运行初始化变量
            file = tf.summary.FileWriter("./tmp", graph=sess.graph)
            print(sess.run([a, var]))
    
    
    
    #图的创建
    def createGraph():
        g = tf.Graph()
        #with表示设定上下文环境
        with g.as_default():
            c = tf.constant(11.0)
            print(c.graph)
    
    def addTest():
        a = tf.constant(5.0)
        b = tf.constant(6.0)
        s = tf.add(a,b)
       # print(s)
        graph = tf.get_default_graph() #主要是分配内存
       # print(graph)
        plt = tf.placeholder(tf.float32,[None,3]) #None表示样本数不固定
        with tf.Session() as sess:
            print(sess.run(plt,feed_dict={plt:[[1,2,3],[4,5,6]]}))
            #print(sess.run(s))
            print(s.eval()) #使用eval()取值
            #打印的地址一致
            print(a.graph)
            print(s.graph)
            print(sess.graph)
    
    
    def shape():
        plt = tf.placeholder(tf.float32,[None,2])
        plt.set_shape([3,2]) #静态修改
    
    if __name__ == '__main__':
        vari()
    

      

    转:https://www.cnblogs.com/ywjfx/p/10909987.html

  • 相关阅读:
    The Mac Application Environment 不及格的程序员
    Xcode Plugin: Change Code In Running App Without Restart 不及格的程序员
    The property delegate of CALayer cause Crash. 不及格的程序员
    nil localizedTitle in SKProduct 不及格的程序员
    InApp Purchase 不及格的程序员
    Safari Web Content Guide 不及格的程序员
    在Mac OS X Lion 安装 XCode 3.2 不及格的程序员
    illustrate ARC with graphs 不及格的程序员
    Viewing iPhoneOptimized PNGs 不及格的程序员
    What is the dSYM? 不及格的程序员
  • 原文地址:https://www.cnblogs.com/cyblogs/p/13531538.html
Copyright © 2011-2022 走看看