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循环中,为了避免发生意外错误将对象从内存中清空。

  • 相关阅读:
    this 关键字
    Win10 删除“此电脑-文件夹”中的七个快捷方式
    ESLint 配置(三)Vue 项目
    ESLint 配置(二)Standard 和 Prettier
    ESLint 配置(一)基础配置
    简易FTP
    选课系统
    ATM+购物车
    ATM+购物车导图
    函数作业
  • 原文地址:https://www.cnblogs.com/wxshi/p/8645613.html
Copyright © 2011-2022 走看看