zoukankan      html  css  js  c++  java
  • TensorFlow 学习笔记(1)----线性回归(linear regression)的TensorFlow实现

    此系列将会每日持续更新,欢迎关注

    线性回归(linear regression)的TensorFlow实现

    #这里是基于python 3.7版本的TensorFlow

    TensorFlow是一个机器学习的利器,打包了众多的机器学习中的模型以及各种数学上的处理

    因此利用TensorFlow来学习机器学习能起到事半功倍的效果。

    以下代码即是线性回归的实现(实现对函数  y = 0.1 x + 0.3  的回归)代码内给出详细注释便于理解

    import tensorflow as tf

    import numpy as np

    #生成原始数据 begin

    x_data = np.random.rand(100).astype(np.float32)       #利用rand(100)生成一个一行100列的矩阵,

    y_data = x_data*0.1 + 0.3                   #astype(np.float32)是由于TensorFlow处理的数据类型通常为此类型

    #生成原始数据 end

    ### 构建tensorflow的结构 start ###
    Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))  #权重,即为 y = ax + b 中的 a 
    biases = tf.Variable(tf.zeros([1]))                #偏置值,即为 y = ax + b 中的 b

    
    

    y = Weights*x_data + biases

    
    

    loss = tf.reduce_mean(tf.square(y-y_data))          #reduce_mean意为取y-y_data的平方的均值
    optimizer = tf.train.GradientDescentOptimizer(0.5)      #这里采用最简单的梯度下降法来实现回归,梯度下降法将会在以后的博客中利用octave梳理内部细节的实现

                                          #简单来讲,梯度下降就是:1.求导 2.向导数为零的点靠拢。

                                        #这里的0.5表示学习率,通俗来说就是向导数为零的点靠拢的速度。
    train = optimizer.minimize(loss)                #使得误差最小
    ### create tensorflow structure end ###

    
    

    sess = tf.Session()
    init = tf.global_variables_initializer()    #将tf.global_variables_initializer(),即全局变量初始化写为init,这样后面就可以通过sess.run(init)来进行初始化
    sess.run(init)                    #这一步才真正意义上初始化!

    
    

    for step in range(201):
      sess.run(train)                  #训练一次
      if step % 10 == 0:
      print(step, sess.run(Weights), sess.run(biases))#每10次输出一下结果,进行观察

     

      这里是我的输出结果(因rand不同程序运行多次的结果可能各不相同)

    ================ RESTART: D:/TensorFlow/linear regression.py ================
    0 [0.36862874] [0.21253814]
    20 [0.17672797] [0.25930387]
    40 [0.12394582] [0.28729928]
    60 [0.10747318] [0.29603627]
    80 [0.10233228] [0.29876298]
    100 [0.10072788] [0.29961395]
    120 [0.10022715] [0.29987952]
    140 [0.10007092] [0.2999624]
    160 [0.10002212] [0.29998827]
    180 [0.10000691] [0.29999635]
    200 [0.10000216] [0.29999888]

    几点要点补充:

    1. TensorFlow中的一些语法会有一些反直觉:当你要声明一个变量时,必须用tf.Variable来声明这个变量,

    而你想要输出某个数据时,例如Weights,必须采用print(sess.run(Weights))才可将其输出

    2. Session 是 Tensorflow 为了控制,和输出文件的执行的语句. 运行 session.run() 可以获得你要得知的运算结果, 或者是你所要运算的部分.

    例如:

    import tensorflow as tf
    # create two matrixes
     
    matrix1 = tf.constant([[3,3]])
    matrix2 = tf.constant([[2],
                           [2]])
    product = tf.matmul(matrix1,matrix2)
    sess = tf.Session() 

    result = sess.run(product)

    print(result)

    sess.close()

    输出结果为[[12]]。

  • 相关阅读:
    vue-amap地图组件的使用
    数据分析
    爬虫之scrapy框架
    爬虫之selenium
    记录一下最近的pwn
    内核提权姿势笔记
    CVE-2016-5343分析
    CVE-2015-8660分析
    Docker远程访问get(root)shell姿势
    Linux内核ROP学习
  • 原文地址:https://www.cnblogs.com/tikitakaka/p/10349411.html
Copyright © 2011-2022 走看看