zoukankan      html  css  js  c++  java
  • 一、Tensorflow新手入门

    1、MacOS Tensorflow(CPU版本)下载和安装

    pip3 install tensorflow

    2、Tensorflow的基本用法

    • 使用图(graph)来表示计算任务
    • 在回话(Session)的上下文(context)中执行图
    • 使用tensor表示数据
    • 通过变量(Variable)维护状态
    • 使用feed和fetch可以为任意的操作赋值或者从中获取数据

      综述:Tensorflow图中的节点称为op(operation),一个op获得o个或者多个tensor(数据)来执行计算,产生0个或者多个tensor(数据),每个tensor是一个类型化的多维数组

      计算图:Tensorflow程序通常分为构建阶段和执行阶段,构建阶段:op的执行步骤被描述成一个图,执行阶段:使用回话执行图中的op

      构建图:构建图的第一步是创建源op(源op不需要任何输入,如常量Constant),源op的输出被传递给其它op做运算。Tensorflow Python库有一个默认图,op构造器可以为图增加节点

    import tensorflow as tf
    
    # 创建一个常量op(节点),产生一个1X2矩阵
    # 添加到默认图中
    # 构造器的返回值代表该常量的op的返回值
    matrix1 = tf.constant([[3., 3.]])
    
    # 创建一个常量op(节点),产生一个2X1矩阵
    matrix2 = tf.constant([[2.],[2.]])
    
    # 创建一个矩阵乘法matmul op,把matrix1和matrix2作为输入
    # 返回值product代表矩阵乘法的结果
    
    product = tf.matmul(matrix1, matrix2)
    
    # 启动默认图
    # 调用sess的run()方法来执行矩阵乘法的op,传入值为product,输出矩阵的乘法op
    # 返回值是一个numpy.ndarray对象
    with tf.Session() as sess:
        result = sess.run(product)
        print(type(result),result)

       调用CPU或者GPU:一般不需要显示指定CPU或者GPU,Tensorflow能自动检测,使用找到的第一个来计算,如果机器上有超过一个可用的,为来让tensorflow使用,必须将op明确指派给它们执行。

    with tf.Session() as sess:
        with tf.device('/gpu:1'):
            matrix1 = tf.constant([[3., 3.]])
            matrix2 = tf.constant([[2.], [2.]])
            product = tf.matmul(matrix1, matrix2)
    • '/cpu:0':机器的cpu
    • '/gpu:0':机器的第一个gpu
    • '/gpu:1':机器的第二个gpu
    • ....

      Tensor:Tensorflow程序使用tensor数据结构来代表数据,可以把tensor看成一个n维数组或者列表,tensor包含静态类型rank和shape

      变量:Variable维护图执行过程中的状态

    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)
    
    # 初始所有化变量
    init_op = tf.global_variables_initializer()
    
    # 启动图,运行op
    with tf.Session() as sess:
        # 运行init
        sess.run(init_op)
        print(sess.run(state))
        for _ in range(3):
            sess.run(update)
            print('new_value:',sess.run(new_value))
            print('state:',sess.run(state))
    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)
    
    with tf.Session() as sess:
        result = sess.run([mul, intermed])
        print(result)

    Feed_dict和tf.placeholder:

      tf.placeholder(dtype, shape=None, name=None):占位符没有初始值,但必须指定类型

        参数:

          dtype:数据类型,tf.int32,float32,string等

          shape:数据形状,默认None,shape=1,shape=[2,3],shape=[None,3]

          name:名称

        返回:Tensor类型

      feed_dict:字典,给出placeholder的值

    import tensorflow as tf
    import numpy as np

    # exp-1 x
    = tf.placeholder(tf.string) with tf.Session() as sess: output = sess.run(x, feed_dict={x: 'Hello World!'}) print(output) # exp-2 x = tf.placeholder(tf.string) y = tf.placeholder(tf.int32) z = tf.placeholder(tf.float32) with tf.Session() as sess: output = sess.run([x,y,z], feed_dict={x: 'Hello World!', y:1, z:0.1}) print(output)
    # exp-3 x
    = tf.placeholder(tf.float32, shape=(None,3)) y = tf.matmul(x, x) with tf.Session() as sess: rand_array = np.random.rand(3,3) print(sess.run(y, feed_dict={x: rand_array}))
  • 相关阅读:
    C语言1博客作业03
    C语言1博客作业02
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言I博客作业03
    C语言I博客作业02
    第一次作业(重做)
  • 原文地址:https://www.cnblogs.com/jp-mao/p/10398417.html
Copyright © 2011-2022 走看看