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

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



首先我们来实现这些函数的实现:这里需要引入一个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 tf
import numpy as np
import 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_data
y_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_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)

#设置代价函数
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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值