zoukankan      html  css  js  c++  java
  • TensorFlow简易学习[1]:基本概念和操作示例

    简介

      TensorFlow是一个实现机器学习算法的接口,也是执行机器学习算法的框架。使用数据流式图规划计算流程,可以将计算映射到不同的硬件和操作系统平台。

    主要概念

      TensorFlow的计算可以表示为有向图(directed graph),或者计算图(computation graph)计算图描述了数据的就算流程,其中每个运算操作(operation)作为一个节点(node),节点与节点之间连接称为(edge)。在计算图变中流动(flow)的数据被称为张量(tensor),故称TensorFlow。

                                                                          

                                  计算图实例[ref1]

      具体说,在一次运算中[ref2]:

        1. 使用图 (graph) 来表示计算任务:基本操作示例

        2. 在被称之为 会话 (Session) 的上下文 (context) 中执行图基本操作示例

        3. 通过 变量 (Variable) 维护状态基本操作示例。

    代码实例

     完整示例:

    #!/usr/bin/pyton
    
    '''
    A simple example(linear regression) to show the complete struct that how to run a tensorflow
    
    create_data -> create_tensorflow_struct->start session
    create date: 2017/10/20

    ''' import tensorflow as tf import numpy as np #create data x_data = np.random.rand(100).astype(np.float32) y_data = x_data*0.1 + 0.3 ###create tensorflow structure begin## Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) biases = tf.Variable(tf.zeros([1])) y = Weights*x_data + biases loss = tf.reduce_mean(tf.square(y-y_data)) optimizer = tf.train.GradientDescentOptimizer(0.5) train = optimizer.minimize(loss) #when define variables, initialize must be called #init = tf.initialize_all_variables() ### create tensorflow structure end ### sess = tf.Session() #note: initialize_local_variables no more support in new version if int((tf.__version__).split('.')[1]) < 12 and int((tf.__version__).split('.')[0]) < 1: init = tf.initialize_all_variables() else: init = tf.global_variables_initializer() sess.run(init) for step in range(201): sess.run(train) if step % 20 == 0: #session controls all opertions and varilables print(step, sess.run(Weights), sess.run(biases)) sess.close()

      计算结果:

      

    基本操作示例

      Session操作: 

    #!/usr/bin/python
    
    '''
    A example to show how to call session
    
    create date: 2017/10/20
    '''
    
    import tensorflow as tf 
    
    #1. 定义一个操作
    m1 = tf.constant([[2, 2]])
    m2 = tf.constant([[3],
                        [3]])
    dot_opeartion = tf.matmul(m1, m2)
    
    #2. 调用session实现
    # 图画好以后,需要通过session来控制执行,让图来运行
    # 另外每一个图中的操作都需要通过session来控制
    # print result
    #method1 use session
    sess = tf.Session()
    result = sess.run(dot_opeartion)
    print(result)
    sess.close()
    
    #method2 use session
    with tf.Session() as sess:
        result_ = sess.run(dot_opeartion)
        print(result_) 

    ##output
    [[12]]
    [[12]]

      

      Placeholder操作

    #!/usr/bin/python
    
    '''
    A example to show how to call placehoder(类似于占位符)
    
    create date: 2017/10/20
    '''
    
    import tensorflow as tf 
    
    #1. 声明placehoder:待传入值
    x1 = tf.placeholder(dtype=tf.float32, shape=None)
    y1 = tf.placeholder(dtype=tf.float32, shape=None)
    z1 = x1 + y1
    
    x2 = tf.placeholder(dtype=tf.float32, shape=None)
    y2 = tf.placeholder(dtype=tf.float32, shape=None)
    z2 = tf.matmul(x2, y2)
    
    #2. 调用session,传入值
    with tf.Session() as sess:
        #when only one operation to run
        #feed_dict: input the values into placeholder
        z1_value = sess.run(z1, feed_dict={x1: 1, y1:2})
    
        # when run multiple operaions
        #run the two opeartions together
        z1_value, z2_value = sess.run(
            [z1, z2],
            feed_dict={
                x1:1, y1:2,
                x2:[[2],[2]], y2:[[3,3]]
            }
        )
        print(z1_value)
        print(z2_value)

      

      Variable操作

    #!/usr/bin/python
    
    '''
    A example to show how to call variables
    
    create date: 2017/10/20
    '''
    
    import tensorflow as tf 
    
    # 1.stuct
    #our first variable in the "global_variable" set 
    var = tf.Variable(0)
    
    add_operation = tf.add(var,1)
    
    #把add_operation值给var
    update_operation = tf.assign(var, add_operation)
    
    # once define variables, you have to initialize them by doing this
    init = tf.global_variables_initializer()
    
    # 2. call session
    with tf.Session() as sess:
        sess.run(init)
        for count in range(3):
            sess.run(update_operation)
            print(sess.run(var))

     --------------------------------------

    说明:本列为前期学习时记录,为基本概念和操作,不涉及深入部分。文字部分参考在文中注明,代码参考莫凡 

  • 相关阅读:
    软件工程课程-助教自我介绍
    软件工程课程-课代表信息
    软件工程课程-课后作业
    小知识记录:第四篇
    小知识记录:第三篇
    小知识记录:第二篇
    小知识记录:第一篇
    dd命令和fio命令测试磁盘io性能
    horizon仪表盘安装
    OpenStack安装部署笔记
  • 原文地址:https://www.cnblogs.com/space-place/p/7889707.html
Copyright © 2011-2022 走看看