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

  • 相关阅读:
    .NET Core 首例 Office 开源跨平台组件(NPOI Core)
    ASP.NET Core 导入导出Excel xlsx 文件
    python练习七—P2P下载
    VisualVM远程连接Tomcat
    一次Linux自动化部署尝试
    python练习六—简单的论坛
    shiro实现APP、web统一登录认证和权限管理
    python练习五—简单web应用
    python练习四—简单的聊天软件
    python练习三—解析xml
  • 原文地址:https://www.cnblogs.com/cyblogs/p/13531538.html
Copyright © 2011-2022 走看看