zoukankan      html  css  js  c++  java
  • 使用TensorFlow实现回归预测

    这一节使用TF搭建一个简单的神经网络用于回归预测,首先随机生成一组数据

    import tensorflow as tf
    import numpy as np
    import matplotlib.pyplot as plt
    tf.set_random_seed(42)
    np.random.seed(42)
    x = np.linspace(-1,1,100)[:,np.newaxis] #<==>x=x.reshape(100,1)
    noise = np.random.normal(0,0.1,size = x.shape)
    y=np.power(x,2) + x +noise #y=x^2 + x+噪音
    plt.scatter(x,y) 
    plt.show()
    

    随机生成了一组数据,模型为(y=x^2+x),看一下数据的分布

    接下来搭建一个含有一个隐藏层的神经网络,损失选择使用均方差误差

    #模型部分
    tf_X = tf.placeholder(tf.float32,x.shape) #=>X
    tf_y = tf.placeholder(tf.float32,y.shape) #=>y
    
    output = tf.layers.dense(tf_X,10,tf.nn.relu,name="hidden")#隐藏层10个节点
    output = tf.layers.dense(output,1,name='output') #1个输出层
    #loss = tf.losses.mean_squared_error(tf_y,output)
    loss = tf.reduce_mean(tf.sqrt(tf.pow(tf_y-output,2)))
    optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.2)
    train_op = optimizer.minimize(loss)
    

    其中tf.losses中提供了常用的损失函数实现,也可以自己去实现,开始训练模型

    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        plt.ion()
        for step in range(100):
            _,err,pred = sess.run([train_op,loss,output],feed_dict={tf_X:x,tf_y:y})
            #cla()  # Clear axis
            #clf()  # Clear figure
            #close() # Close a figure window
            plt.cla()#
            plt.scatter(x,y)
            plt.plot(x,pred,'r-',lw=5)
            plt.text(0.5, 0, 'Loss=%.4f' % err, fontdict={'size': 20, 'color': 'red'})
            #plt.show()
    plt.ioff()
    plt.show()
    

    看一看效果:

    note:上面使用了plt.cla方法,这是由于方便看到变化过程,将plot过程写入到了for循环中,为了避免发生意外错误将对象从内存中清空。

  • 相关阅读:
    node.js结合wechaty实现微信机器人[基础篇]
    .env文件为NodeJS全局环境变量
    基于jquery实现一个提示插件
    Puppeteer实现一个超简单的自动化机器人
    Vue高仿阿里动态banner,制作组件
    css不常用属性
    Vue表单校验失败滚动到错误位置
    C# Func委托
    深入解析C# 4th 笔记(第一章)
    C# 笔记 XML基础
  • 原文地址:https://www.cnblogs.com/wxshi/p/8645613.html
Copyright © 2011-2022 走看看