zoukankan      html  css  js  c++  java
  • 跟我学算法-tensorflow 实现线性拟合

    TensorFlow™ 是一个开放源代码软件库,用于进行高性能数值计算。借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等)。TensorFlow™ 最初是由 Google Brain 团队(隶属于 Google 的 AI 部门)中的研究人员和工程师开发的,可为机器学习和深度学习提供强力支持,并且其灵活的数值计算核心广泛应用于许多其他科学领域

    接下来我们通过一个线性拟合的简单实例来说明一下

    第一步,通过np.random.normal 创造一批高斯分布的数据

    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd
    import tensorflow as tf
    
    
    num_points = 1000
    vector_sector = []
    
    # 创造一1000个点
    for num_point in range(num_points):
        x = np.random.normal(0.0, 0.55)
        y = x*0.1 + 0.3 + np.random.normal(0, 0.03)
        vector_sector.append([x, y])
    #进行添加赋值操作
    x_data = [v[0] for v in vector_sector]
    y_data = [v[1] for v in vector_sector]

    第二步: 初始化参数和使用估计值和真实值的均方误差来表示loss

    W = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name='W')
    # 产生一个初始值为0 的b值
    b = tf.Variable(tf.zeros([1]), name='b')
    # 构造线性函数
    y = W * x_data + b
    print(np.shape(y))
    # 以预估值y和实际值y_data之间的均方误差作为损失
    loss = tf.reduce_mean(tf.square(y-y_data), name='loss')

    第三步: 初始化模型,并进行迭代降低loss,优化模型

    optimizer = tf.train.GradientDescentOptimizer(0.5)
    # 训练的时候就是最小化这个参数
    train = optimizer.minimize(loss)
    
    #进行初始化
    sess = tf.Session()
    init = tf.global_variables_initializer()
    sess.run(init)
    # 打印当前值
    print('W', sess.run(W), 'b', sess.run(b), 'loss', sess.run(loss))
    
    #循环20次,训练train,降低loss
    for i in range(20):
        sess.run(train)
        print(print('W', sess.run(W), 'b', sess.run(b), 'loss', sess.run(loss)))

    第四步: 做出拟合曲线的图

    # 做散点图的拟合曲线
    plt.scatter(x_data, y_data, c='r')
    plt.plot(x_data, x_data*sess.run(W)+ sess.run(b))
    plt.show()

  • 相关阅读:
    事件
    dom对象
    逻辑运算和作用域的问题
    json
    数组
    字符串
    函数
    js的数据类型和全局方法
    js
    10.16 js内容
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/9564784.html
Copyright © 2011-2022 走看看