【keras学习(二)】非线性回归模型

一、非线性回归模型

数据呈现非线性状,想要预测数据的走向

二、代码分析

1、导入相关模块

import numpy as np
import matplotlib.pyplot as plt
from tensorflow import keras

2、建立非线性随机数据作为数据集

#建立随机数作为数据集
x_data = np.linspace(-0.5,0.5,200)  #从-0.5到0.5取均匀的200个数
noise = np.random.normal(0,0.02,x_data.shape)
y_data = np.square(x_data)+noise

其中square函数指的是平方

3、建立非线性神经网络模型

#使用keras的Sequential函数建立一个顺序模型
model = keras.Sequential()
#在模型中添加全连接层和激活函数
model.add(keras.layers.Dense(units=10,input_dim=1))
model.add(keras.layers.Activation('tanh'))
model.add(keras.layers.Dense(units=1))
model.add(keras.layers.Activation('tanh'))

#定义优化算法
sgd = keras.optimizers.SGD(learning_rate=0.3)
#优化方法:sgd(随机梯度下降算法)
#损失函数:mse(均方误差)
model.compile(optimizer=sgd,loss='mse')

注意这里与线性回归模型不同的是,在每个全连接层之间添加激活函数,以将模型变为非线性的,以此能够拟合非线性数据

sgd优化重新定义其学习率,以较快地完成学习,如果使用默认学习率,建议增加训练迭代次数

4、对模型进行训练

for step in range(3001):
    #每次训练一个批次
    cost = model.train_on_batch(x_data,y_data)
    #每500个batch打印一次cost
    if step % 500 == 0:
        print('cost:',cost)

5、获取预测值并在图上画出来

#x_data输入到网络中,得到预测值y_pred
y_pred = model.predict(x_data)

#显示随机点的结果
plt.scatter(x_data,y_data)

#显示预测点的结果
plt.plot(x_data,y_pred,'r-',lw=3)
plt.show()

运行结果如下图所示,蓝色表示生成的随机数作为数据集的点,红色的线表示预测值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值