简单ANN实现二次曲线拟合

代码:

 1 import os
 2 os.environ[‘TF_CPP_MIN_LOG_LEVEL‘]=‘2‘
 3 import tensorflow as tf
 4 import numpy as np
 5 import matplotlib.pyplot as plt
 6 //定义层
 7 def add_layer(inputs, in_size, out_size, activation_function=None):
 8     Weights = tf.Variable(tf.random_normal([in_size,out_size]),name=‘W‘)
 9     biases = tf.Variable(tf.zeros([1,out_size])+0.1,name=‘b‘)
10     Wx_plus_b = tf.add(tf.matmul(inputs,Weights),biases)
11     if(activation_function is None):
12         outputs = Wx_plus_b
13     else:
14         outputs = activation_function(Wx_plus_b)
15     return outputs
16 //含有噪声的数据
17 x_data = np.linspace(-1,1,300)[:,np.newaxis]
18 noise = np.random.normal(0,0.05,x_data.shape)
19 y_data = np.square(x_data)-0.5+noise
20
21
22 xs = tf.placeholder(tf.float32,[None,1],name=‘x_input‘)
23 ys = tf.placeholder(tf.float32,[None,1],name=‘y_input‘)
24
25
26 //构建输入层层(1),隐藏层(4),输出层(1) 梯度下降优化,学习率为0.1
27 l1 = add_layer(xs,1,4,activation_function=tf.nn.tanh)
28 prediction = add_layer(l1,4,1,activation_function=None)
29 loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1]))
30 train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
31
32
33 //初始化
34 init = tf.global_variables_initializer()
35 sess = tf.Session()
36 sess.run(init)
37
38 //绘图
39 fig = plt.figure()
40 ax = fig.add_subplot(1,1,1)
41 ax.scatter(x_data,y_data)
42 plt.ion()
43 plt.show()
44 for i in range(10000):
45     sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
46     if(i%50==0):
47         _loss = sess.run(loss,feed_dict={xs:x_data,ys:y_data})
48         print(_loss)
49         if(_loss<0.005):
50             exit()
51         try:
52             ax.lines.remove(lines[0])
53         except:
54             pass
55         prediction_value = sess.run(prediction,feed_dict={xs:x_data})
56         lines = ax.plot(x_data,prediction_value,‘r-‘,lw=5)
57         plt.pause(0.1)
时间: 2025-01-01 21:16:19

简单ANN实现二次曲线拟合的相关文章

机器学习的防止过拟合方法

过拟合 ??我们都知道,在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布(i.i.d,independently and identically distributed),即当前已产生的数据可以对未来的数据进行推测与模拟,因此都是使用历史数据建立模型,即使用已经产生的数据去训练,然后使用该模型去拟合未来的数据.但是一般独立同分布的假设往往不成立,即数据的分布可能会发生变化(distribution drift),并且可能当前的数据量过少,不足以对整个数据集进行分

机器学习中防止过拟合的处理方法

原文地址:一只鸟的天空,http://blog.csdn.net/heyongluoyao8/article/details/49429629 防止过拟合的处理方法 过拟合 ??我们都知道,在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布(i.i.d,independently and identically distributed),即当前已产生的数据可以对未来的数据进行推测与模拟,因此都是使用历史数据建立模型,即使用已经产生的数据去训练,然后使用该模型去拟合

防止过拟合的处理方法

原文:http://blog.csdn.net/ZhikangFu/article/details/50885045  http://blog.csdn.net/heyongluoyao8/article/details/49429629 防止过拟合的处理方法 过拟合 ??我们都知道,在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布(i.i.d,independently and identically distributed),即当前已产生的数据可以对未来的数

欠拟合和过拟合的一般解决方法

简单来说,欠拟合是指模型在训练集.验证集和测试集上均表现不佳的情况:过拟合是指模型在训练集上表现很好,到了验证和测试阶段就大不如意了,即模型的泛化能力很差.欠拟合和过拟合一直是机器学习训练中的难题,在进行模型训练的时候往往要对这二者进行权衡,使得模型不仅在训练集上表现良好,在验证集以及测试集上也要有出色的预测能力.下面对解决欠拟合和过拟合的一般方法作一总结,说明大致的处理方向,具体应用还得结合实际的任务.数据和算法模型等. 解决欠拟合(高偏差)的方法 1.模型复杂化 对同一个算法复杂化.例如回归

基于MATLAB的多项式数据拟合方法研究-毕业论文

摘要:本论文先介绍了多项式数据拟合的相关背景,以及对整个课题做了一个完整的认识.接下来对拟合模型,多项式数学原理进行了详细的讲解,通过对文献的阅读以及自己的知识积累对原理有了一个系统的认识.介绍多项式曲线拟合的基本理论,对多项式数据拟合原理进行了全方面的理论阐述,同时也阐述了曲线拟合的基本原理及多项式曲线拟合模型的建立.具体记录了多项式曲线拟合的具体步骤,在建立理论的基础上具体实现多项式曲线的MATLAB实现方法的研究,采用MATLAB R2016a的平台对测量的数据进行多项式数据拟合,介绍了M

大白话5分钟带你走进人工智能-第十四节过拟合解决手段L1和L2正则

                                                                                                  第十四节过拟合解决手段L1和L2正则 第十三节中,我们讲解了过拟合的情形,也就是过度的去拟合训练集上的结果了,反倒让你的模型太复杂.为了去解决这种现象,我们提出用L1,L2正则去解决这种问题. 怎么把正则应用进去?我们重新审视目标函数,以前我们可以理解目标函数和损失函数是一个东西.而有正则的含义之后,目

Andrew Ng Machine Learning - Week 1: Introduction

此文是斯坦福大学,机器学习界 superstar - Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记.力求简洁,仅代表本人观点,不足之处希望大家探讨. 课程网址:https://www.coursera.org/learn/machine-learning/home/welcome Week 1: Introduction Environment Setup Instructions 这一章介绍课程一般使用的工具.octave或者matlab即

[CS231n-CNN] Training Neural Networks Part 1 : parameter updates, ensembles, dropout

课程主页:http://cs231n.stanford.edu/ _______________________________________________________________________________________________________________________________________________________ -Parameter Updates 解决的方法: *Momentum update 其实就是把x再加上mu*v(可以看作是下滑过

overfit &amp; underfit

原文:http://blog.csdn.net/yhdzw/article/details/22733317 过拟合:1)简单理解就是训练样本的得到的输出和期望输出基本一致,但是测试样本输出和测试样本的期望输出相差却很大 .2)为了得到一致假设而使假设变得过度复杂称为过拟合.想像某种学习算法产生了一个过拟合的分类器,这个分类器能够百分之百的正确分类样本数据(即再拿样本中的文档来给它,它绝对不会分错),但也就为了能够对样本完全正确的分类,使得它的构造如此精细复杂,规则如此严格,以至于任何与样本数据