keras 2_非线性回归

keras 2_非线性回归

import matplotlib.pyplot as plt
import keras
import numpy as np
# Sequantial 按顺序构成的模型
from keras.models import Sequential
# Dense全连接层
from keras.layers import Dense,Activation
from keras.optimizers import SGD

# 生成数据
# 在0.5-0.5之间生成200个点
x_data = np.linspace(-0.5, 0.5, 200)
noise = np.random.normal(0, 0.02, x_data.shape)
y_data=np.square(x_data)+noise

# 显示随机点
plt.scatter(x_data,y_data)
plt.show()

# 构建一个顺序模型
model = Sequential()
# 在模型中添加全连接层
model.add(Dense(units=500,input_dim=1))     # units:表示输出参数的维度,input:表示输入参数的维度
# 加入激活函数
model.add(Activation('tanh'))
model.add(Dense(units=1,input_dim=500))
model.add(Activation('tanh'))

# 自定义优化算法
sgd = SGD(lr=0.3)
# sgd:随机梯度下降算法
# mse:均方误差
model.compile(optimizer=sgd,loss='mse')



# 训练模型
for step in range(100000):
    # 使用batch训练
    cost = model.train_on_batch(x_data, y_data)
    # 每500个batch打印一次cost值
    if step % 500==0:
        print("cost",cost)

# 打印权值与偏执
# w0,b0 = model.layers[0].get_weights()

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


# 显示原始点分布结果
plt.scatter(x_data,y_data)
# 显示预测结果
plt.plot(x_data,y_pred,'r-',lw=3)
plt.show()
plt.savefig("pic.jpg")

# 进行预测,但是在预测前需要利用numpy将数据转换下
data=[100]
predict1 = model.predict(np.asarray(data))
print(predict1)

在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值