简单的Tensorflow(5):回归分析

来源:互联网 发布:澳洲买mac便宜吗 编辑:程序博客网 时间:2024/06/05 10:48

至于什么是线性和非线性,最早出现在信号系统当中,是针对齐次性,叠加性等提出的,不懂的简单理解是直线即可。要对一堆数据进行模型分析,当我们看到一堆这样的数据时,第一反应这绝壁是一个二次函数。



首先我们来实现这些函数的实现:这里需要引入一个numpy库

设置一个一维数组,让这个数组是呈等价递增,并增加一个维度,可以理解为上图中的x轴。x_data = numpy.linspace(-0.5, 0.5, 200)[:,np.newaxis]

设置噪声,也可理解为上下波动,noise = np.random.normal(0,0.02,x_data.shape)

设置y_data,y_data = np.square(x_data) + noise

到这里所有的数据已经完全产生,接下来的工作就是显示出来和训练出这个模型


这次不用函数模型,直接用一个神经网络来训练这个模型:

定义两个占位符,x和y,一个当作输入一个当作输出,用来训练网络
x = tf.placeholder(tf.float32,[None,1])
y = tf.placeholder(tf.float32,[None,1])

定义网络中间网络层,包括权重Weight和偏差Biase,(和x输入连接的部分)
Weights_L = tf.Variable(tf.random_normal([1,10]))
Biases_L = tf.Variable(tf.zeros([1,1]))
Result_L = tf.matmul(x,Weights_L) + Biases_L
L = tf.nn.tanh(Result_L)


定义和y输入连接的部分
Weights_R = tf.Variable(tf.random_normal([10,1]))
Biases_R = tf.Variable(tf.zeros([1,1]))
Result_R = tf.matmul(L,Weights_R) + Biases_R
R = tf.nn.tanh(Result_R)


网络设置完成之后就用字典填充准备的数据来训练网络:

sess.run(train,feed_dict={x:x_data,y:y_data})

训练完成之后再次将x_data填入得到自己预测的值

prediction = sess.run(R,feed_dict={x:x_data})


画图的部分使用matplotlib.pyplot即可,很简单。

全部代码:

import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt#设置一个一维数组,让这个数组是呈等价递增,并增加一个维度x_data = np.linspace(-0.5, 0.5, 200)[:,np.newaxis]#print(x_data)#设置波动,也可称为噪音noise = np.random.normal(0,0.02,x_data.shape)#print(noise)#设置y_datay_data = np.square(x_data) + noise#print(y_data)#定义两个占位符,x和y,一个当作输入一个当作输出,用来训练网络x = tf.placeholder(tf.float32,[None,1])y = tf.placeholder(tf.float32,[None,1])#定义网络中间网络层,包括权重Weight和偏差Biase#定义和x输入连接的部分Weights_L = tf.Variable(tf.random_normal([1,10]))Biases_L = tf.Variable(tf.zeros([1,1]))Result_L = tf.matmul(x,Weights_L) + Biases_LL = tf.nn.tanh(Result_L)#定义和y输入连接的部分Weights_R = tf.Variable(tf.random_normal([10,1]))Biases_R = tf.Variable(tf.zeros([1,1]))Result_R = tf.matmul(L,Weights_R) + Biases_RR = tf.nn.tanh(Result_R)#设置代价函数loss = tf.reduce_mean(tf.square(y-R))#设置优化器optimizer = tf.train.GradientDescentOptimizer(0.1)#设置最小代价函数train = optimizer.minimize(loss)#设置初始化变量init = tf.global_variables_initializer()#设置会话with tf.Session() as sess:    sess.run(init)    for step in range(2000):        sess.run(train,feed_dict={x:x_data,y:y_data})    #获取预测值    prediction = sess.run(R,feed_dict={x:x_data})    #画图    plt.figure()    plt.scatter(x_data,y_data)    plt.plot(x_data,prediction,'-r',lw=5)    plt.show()


结果是:


阅读全文
0 0
原创粉丝点击