• TensorFlow学习


    Tensorflow安装

    总体来说还是要废好大周折的,捣鼓了两三天,可算是整完了,现在装大多装的是tensorflow2.0,官网提供的测试代码可能无法运行。起初不知,不知因为这个问题重装了多少遍,感觉电脑要被我整废了。。。。装的版本分为两个:cpu 、gpu。

    cpu:这个比较好办,但根据教程,(为保险起见)需要先装(必须是专业版)VS 2015 或者 VS2017 ,之后在VS中装入C++工具包。成功之后,根据官网所说,打开cmd,先将pip upgrade到最新版本,之后 install tensorflow,就可以啦。

    gpu:可能需要废些周章,需要另在自行安装cuda(前提是电脑拥有NVIDIA显卡并且支持gpu加速)、cuDNN(版本要与cuda匹配),并且配置好变量。详情见以下视频链接:

    https://www.bilibili.com/video/av70734671/?spm_id_from=333.788.videocard.2

    安装好之后,运行以下代码进行检测,如结果如下则GPU版本安装成功了:

    import tensorflow as tf
    import os
    
    os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
    
    a = tf.constant(1.)
    b = tf.constant(2.)
    print(a+b)
    
    print('GPU:', tf.test.is_gpu_available())
    
    #运行结果:
    '''
        tf.Tensor(3.0, shape=(), dtype=float32)
        GPU: True
    '''

    Tensorflow基础

    构造图:构造计算图

    执行图:tensorflow运行图中tensor的过程。

    在tensorflow中,图的构造和执行是分离的,因此tensorflow是一种静态图模式,一旦定义好了,它的执行便是固定的,不再变化的。

    tensor:可以定义各种类型,可以有自己独特的名字。

    构造图(Hello,world!)

    import tensorflow as tf
    tf.compat.v1.disable_eager_execution()
    hello = tf.constant('hello,tensorflow')
    sess= tf.compat.v1.Session()
    print(sess.run(hello)) 
    #运行结果:
    '''
      b'hello,tensorflow'
    '''

    session :

      作用:运行图中所有的tensor,并保存。

      *在TensorFlow 2.0中,由于某一些库被移除,需要如下才能引用: 

    import tensorflow as tf
    sess = tf.Session()   #开启Session语法 :运行图中所有的tensor,并且保存。
    a = tf.constant(32)    #构造图阶段
    b = tf.constant(10)   #构造图阶段
    c = tf.add(a,b)     #构造图阶段
    print(sess.run(a))   #执行图阶段
    print(sess.run(c))    #执行图阶段 print(sess.run([a,b]))  #执行图阶段 print(sess.run([a,b,c])) #执行图阶段
    #运行结果:
    '''
      32
      [32,10]
      [32,10,42]
    '''
    import tensorflow as tf
    sess = tf.Session()
    py_a = sess.run(a)
    print(type(py_a))
    print(py_a)
    py_r = sess.run([a,b,c])
    print(type(py_r))
    print(py_r[0],py_r[1],py_r[2])
    sess.close()  #关闭Session
    #运行结果:
    '''
      <type 'numpy.int32'>
      32
      <type 'list'>
      (32,10,42)

    Op:

      作用:tensorflow具有很多基本操作,这些基本操作定义为Op。   

    #加法 a+b+b
    d = td.add_n([a,b,b])
    
    #减法 a-b
    e = tf.subtract(a,b)
    
    #乘法 a*b
    f = tf.multiply(a,b)
    
    #除法 a/b
    g = tf.divide(a,b)
    
    #求余 a%b
    h = tf.mod(a,b)
    
    #数值类型转换
    a_float = tf.cast(a,dtype = tf.float32)
    b_float = tf.cast(b,dtype = tf.float32)
    
    #sin(a)
    i = tf.sin(a_float)
    
    #exp(1/a)
    j = tf.exp(tf.divide(1.0,a_float))
    
    #i +log(i)
    k = tf.add(i, tf.math.log(i))

      mat:

        作用:tensorflow的矩阵以及运算

    mat_a = tf.constant([1,2,3,4])
    #从4维向量生成(2,2)的矩阵
    mat_a = tf.reshape(mat_a(2,2))
    
    mat_b = tf.constant([1,3,5,7,9,11])
    #生成(2,3)的矩阵
    mat_b = tf.reshape(mat_b,(2,3))
    
    #矩阵乘法
    mat_c = tf.matmul(mat_a,mat_b)
    

     random:

        作用:tensorflow提供了多种随机化的方式

    #标准正态分布随机
    rand_normal = tf.random_normal((),mean = 0.0,stddev = 1.0,dtype = tf.float32,seed = None)
    
    #truncated 正态随机
    truncated_normal = tf.truncated_normal((),mean = 0.0,stddev = 1.0,dtype = tf.float32,seed = None)
    
    #均匀分布随机
    rand_uniform = tf.random_uniform((),minval = 0.0,maxval = 1.0,dtype = tf.float32,seed = NOne)
    

      variable:

        作用:tensorflow下可以修改值的tensor,它需要定义一个初始值,可以是数值,列表或者numpy矩阵,也可以直接是tensor。 像tensor一样,不能通过print获得具体的值。

        初始化Variable:

    #开启交互式“Session”
    sess - tf.InteractiveSession()
    
    #一次性初始化所有变量
    init = tf.global_variables_initializer()
    
    #一般‘session’方法
    sess.run(init)
    ##'InteractiveSession'的方法
    init.run()
    
    #初始化某些变量
    init_ab = tf.variables_initializer([var_a,var_b])
    init_ab.run()
    
    #初始化某个变量
    var_w.initializer.run()

        eval of variable

    W = tf.Variable(10)
    sess.run(W.initializer)
    
    print(W)
    print(sess.run(W))
    print(W.eval())
    #Out: ''' <tf.Variable 'Variable_3:0' shape=() dtype=int32_ref> 10 10 '''

        variable赋值

          作用:通过assign对variable进行赋值(这是一个操作,必须执行后才会产生效果)

    W.assign(100)
    W.initializer.run()
    print(W.eval(sess))
    
    #Out:
    '''
        10
    '''
    
    assign_op = W.assign(100)
    W.initializer.run()
    assign_op.eval()
    print(W.eval())
    
    #Out:
    '''
        100
    '''
    

    占位符

      作用:图的节点可以没有具体的值,tensorflow根据这个逻辑定制了占位符(placeholder)的概念,它在构建图的时候占据图中一个位置,然后在执行图的时候才会代入具体的值。

    #定义一个占位符
    #'tf.placeholder(dtype,shape=None,name=None)'
    
    #定义一个'float32'型的占位符,它是一个长为3的向量
    a = tf.placeholder(tf.float32,shape=[3])
    
    #定义一个'bool'型的占位符,它是一个'1X2'的矩阵
    b = tf.placeholder(tf.bool,shape=[1,2])
    

      

  • 相关阅读:
    快速排序算法
    冒泡排序
    正则表达式
    博客园 自定义 个性主题优化 这是我迄今为止用过的最好的模板 silence
    Python 中 如何复制图片?如何更改图片存储路径? 在遇无数坑后的最全解答 百试百灵
    作业test
    day69
    day68
    day67
    day67test
  • 原文地址:https://www.cnblogs.com/Dreamer-Jie/p/12547164.html
Copyright © 2020-2023  润新知