Tensorflow 线性回归与非线性回归

tensorflow线性回归与非线性回归

线性回归

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
x_data = np.random.random(100)
noise = np.random.random(100)
y_data = x_data*0.1 + 0.2 +noise/50
plt.scatter(x_data,y_data,c='r')
plt.show()

在这里插入图片描述

d = tf.Variable(np.random.random(1))
k = tf.Variable(np.random.random(1))
y = k*x_data + d
#二次代价函数 均方差
loss = tf.losses.mean_squared_error(y_data,y)
optimizer = tf.train.GradientDescentOptimizer(0.4)
train= optimizer.minimize(loss)

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for i in range(201):
        sess.run(train)
    y_pred = sess.run(y)
    plt.scatter(x_data,y_data)
    plt.plot(x_data,y_pred,'r-',lw=3)
    plt.show()
    kk = sess.run(k)
    dd = sess.run(d)
    print(kk,dd)

在这里插入图片描述

非线性回归

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

x_data = np.random.random(200)[:,np.newaxis]
print(x_data.shape)
noise = np.random.normal(0,0.1,x_data.shape)
print(noise.shape)
y_data = x_data*x_data + noise
plt.scatter(x_data,y_data)
plt.show()

在这里插入图片描述

x = tf.placeholder(tf.float32,[None,1])
y = tf.placeholder(tf.float32,[None,1])
x_test = np.linspace(0,1,600)[:,np.newaxis]

#神经网络:1-20-1
w1 = tf.Variable(tf.random_normal([1,20]))
b1 = tf.Variable(tf.zeros([20]))

wxplus1 = tf.matmul(x,w1) + b1
l1 = tf.nn.tanh(wxplus1)

w2 = tf.Variable(tf.random_normal([20,1]))
b2 = tf.Variable(tf.zeros([1]))
wxplus2 = tf.matmul(l1,w2) + b2
prediction = tf.nn.tanh(wxplus2)

loss = tf.losses.mean_squared_error(y,prediction)
#使用梯度下降法最小化loss
train = tf.train.GradientDescentOptimizer(0.1).minimize(loss)


with tf.Session() as sess:
    #变量初始化
    sess.run(tf.global_variables_initializer())
    for _ in range(2000):
        sess.run(train,feed_dict={x:x_data,y:y_data})
    prediction_value = sess.run(prediction,feed_dict = {x:x_test})
    plt.scatter(x_data,y_data)
    plt.plot(x_test,prediction_value,'r-',lw=5)

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值