前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kera 学习-线性回归

kera 学习-线性回归

作者头像
用户2434869
发布2018-09-12 10:43:31
6610
发布2018-09-12 10:43:31
举报
文章被收录于专栏:yl 成长笔记

园子里头看到了一些最基础的 keras 入门指导, 用一层网络,可以训练一个简单的线性回归模型。

自己学习了一下,按照教程走下来,结果不尽如人意,下面是具体的过程。

第一步: 生成随机数据,绘出散点图

代码语言:javascript
复制
import numpy as np
from keras.models  import Sequential
from keras.layers import Dense 
import matplotlib.pyplot as plt

# 生产随机数据
np.random.seed(123) # 指定种子,使得每次生成的随机数保持一致
x = np.linspace(-1,1,200) # 生成一个长度为 200 的 list,数值大小在 [-1,1] 之间
np.random.shuffle(x) #随机排列传入 list 
y = 0.5 * x + 2 + np.random.normal(0, 0.05, (200,)) # 添加正态分布的偏差值

散点图如下:

 二、创建网络模型

代码语言:javascript
复制
# 创建模型
model = Sequential()
# 添加全连接层,输入维度 1, 输出维度 1 
model.add(Dense(output_dim = 1, input_dim= 1))

三、模型编译

代码语言:javascript
复制
# 模型编译
# 损失函数:二次方的误差, 优化器:随机梯度随机梯度下降,stochastic gradient descent
model.compile(loss='mse', optimizer='sgd')  

四、模型训练

代码语言:javascript
复制
# 训练模型,就跑一次

print('start train model:')
for step in range(300):
    cost = model.train_on_batch(x_train, y_train)
    if step % 50 == 0:
        print('cost:', cost)

五、测试模型

代码语言:javascript
复制
#看测试数据损失又多少
print('start test:')
cost = model.evaluate(x_test, y_test, batch_size=40)
print('the loss is:', cost)

# 查看函数参数
w,b = model.layers[0].get_weights()
print('weights =',w, '  biases = ', b)

# 用模型预测测试值
y_pred = model.predict(x_test)

# 画出测试散点图
plt.scatter(x_test, y_test)
# 画出回归线
plt.plot(x_test, y_pred)
plt.show()

     输出结果: 

此次训练所得模型:

从图中可以看出,模型没有很好的满足我们的需求,进行调整,看下结果:

减小batch_size, 增加训练次数。

batch_size: 单一批训练样本数量

epochs : 将全部样本训练都跑一遍为 1 个 epoch,  10 个 epochs 就是全部样本都训练 10 次

代码语言:javascript
复制
# 调整模型训练过程
model.fit(x_train, y_train, batch_size=5,epochs=60)

最终所得模型图为:

 曲线为:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档