• Tensorflow初入门


    想要使用Tensorflow必须先要安装上这个,我用的是win10系统,之前也装了python环境

    所以我就直接使用pip install tensorflow命令安装上就可以使用了。

    想要使用tensorflow,就必须明白tensorflow:

    1、使用图(graph)来表示计算任务。

    2、在被称之为为会话(session)的上下文(context)中执行图。

    3、使用tensor表示数据。

    4、通过变量(Variable)维护状态。

    5、使用feed和fetch可以为任意的操作赋值或者从其中获取数据。

    tensorflow是一个编程系统,使用图来表示计算任务。途中的节点被称为op。一个op获得0个或多个tensor,执行计算,产生0个或多个tensor。每个tensor是一个类型化的多为数组。一个tensorflow图描述了计算的过程,为了进行计算,图必须在会话里被启动。会话将图的op分发到诸如cpu或gpu之类的设备上,同时提供执行op的方法。这些方法执行后,将产生的tensor返回。在Python中,返回的是numpy ndarray对象。

    tensorflow程序通常被组织成一个构建和一个执行阶段。在构建阶段,op的执行步骤被描述成一个图。在执行阶段,使用会话执行执行图中的op。例如,通常在构建阶段创建一个图来表示和训练神经网络,然后在执行阶段反复执行图中的训练op。

    构建图

    tensorflow python库有一个默认图,op构造器可以为其增加节点。

    下面我们来构建一个图,并执行它

    import tensorflow as tf
    
    #建立computational graph
    node1=tf.constant(3.,tf.float32)
    node2=tf.constant(4.5)
    tensor=tf.add(node1,node2)
    
    print(node1)
    print(node2)
    
    #执行computational graph
    session=tf.Session()
    print(session.run(node1))
    print(session.run(node2))
    print(session.run(tensor))

    session.close()

    运行结果是这样的

    由此可见我们创建node1与node2其实是创建了两个tensor结点,Session对象在使用完之后需要关闭以释放资源。除了显式的条用close外,也可以使用“with”代码块来自动完成关闭工作。

    with tf.Session() as session:
        result=session.run(node1)
        print(redult)

    在实现上,tensorflow将图形定义转换成分布式执行的操作,以充分利用可用的计算机资源。

    交互式使用

    文档中的Python示例使用一个会话Session来启动图,并调用Session.run()方法执行操作。为了便于使用注入IPython之类的Python交互环节,可以使用InteractiveSession代替Session类,使用Tensor.eval()和Operation.run()方法代替Session.run()。这样可以避免使用一个变量来持有会话。

    #进入一个交互式Tensorflow会话
    import tensorflow as tf
     
    sess=tf.InteractiveSession()
    
    x=tf.Variable([1.0,2.0])
    a=tf.constant([3.0,3.0])
    
    #使用Operation.run()方法初始化x
    x.initializer.run()
    
    #增加一个剪发op,从x减去a,运行减法结果,减去输出结果
    sub=tf.sub(x,a)
    print(sub.eval())

    Tensor

    tensorflow程序使用tensor数据结构来代表所有的数据,计算图中,操作间传递的数据都是tensor。你可以把tensorflow tensor看作是一个n维的数组或者列表。一个tensor包含一个静态类型rank,和一个shape。

    变量

    Variables变量维护图执行过程中的状态信息。下面的例子演示了如何使用变量实现一个简单的计数器。

    import tensorflow as tf
     
    #创建一个变量,初始化维标量0
    state=tf.Variable(0,name="counter")
    
    #创建一个op,其作用是使state增加1
    one=tf.constant(1)
    new_value=tf.add(state,one)
    update=tf.assign(state,new_value)
    
    #启动图后变量不需经过初始化
    
    #首先必须增加一个初始化‘op’到图中
    init_op=tf.initialize_all_variables()
    
    启动图,运行op
    with tf.Session() as sess:
        sess.run(init_op)
        print(sess.run(state))
        for _ in range(3):
            sess.run(update)
            print(sess.run(state))

    运行结果如下

    代码中的assign()操作是图所描绘的表达式的一部分,正如add()操作一样,所以在调用run()执行表达式之前,不会进行真正执行的赋值操作。

    我们通常会将一个统计模型中的参数表示为一组变量。例如,你可以将一个神经网络的权重作为某个变量存储在一个tensor中。在训练过程中,通过重复运行训练图,更新这个tensor。

    Fetch

    为了取回操作的输出内容,可以在使用Session对象的run()调用执行图时,传入一些tensor,这些tensor会帮助你取回结果。在之前我们只取回了单个节点state,但是你也可以取回多个tensor:

    import tensorflow as tf
    
    input1=tf.constant(3.0)
    input2=tf.constant(2.0)
    input3=tf.constant(5.0)
    intermed=tf.add(input2,input3)
    mul=tf.multiply(input1,intermed)#multiply(),两个数相乘
    
    with tf.Session() as sess:
        result=sess.run([mul,intermed])
        print(result)

    输出结果如下

    需要获取多个tensor值,在op的依次运行中一起获得(而不是之歌去获取tensor)。也就是我们可以将两个节点和在一块输出。

    feed

    上述示例在计算图中引入了tensor,以常量或者变量的形式存储。Tensorflow还提供了feed机制,该机制可以临时替代图中的任意操作中的tensor可以对图中任何操作提交补丁,直接插入一个tensor。

    feed使用一个tensor值临时,替换一个操作的输出结果。你可以提供feed数据作为run()调用的参数。feed旨在调用它的方法内有效,方法结束,feed就会小时。最常见的用例是将某些特殊的操作指定为“feed”操作,标记的方法是使用tf.placeholder()为这些操作创建占位符。

    import tensorflow as tf
    
    input1=tf.placeholder(tf.float32)
    input2=tf.placeholder(tf.float32)
    output=tf.multiply(input1,input2)
    
    with tf.Session() as sess:
        print(sess.run([output],feed_dict={input1:[7.],input2:[2.]}))

    输出的结果是这样的

  • 相关阅读:
    欧拉函数线性筛法
    欧拉筛素数
    05:登月计划
    09:LGTB 学分块
    2017.7.15清北夏令营精英班Day1解题报告
    T7316 yyy的最大公约数(者)
    T7314 yyy的巧克力(钟)
    T7315 yyy矩阵折叠(长)
    DataReader,DataTable利用泛型填充实体类
    数据库入库的方式实现
  • 原文地址:https://www.cnblogs.com/fromzore/p/10122108.html
Copyright © 2020-2023  润新知