kera 学习-线性回归

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

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

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

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,)) # 添加正态分布的偏差值

散点图如下:

 二、创建网络模型

# 创建模型
model = Sequential()
# 添加全连接层,输入维度 1, 输出维度 1 
model.add(Dense(output_dim = 1, input_dim= 1))

三、模型编译

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

四、模型训练

# 训练模型,就跑一次

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)

五、测试模型

#看测试数据损失又多少
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 次

# 调整模型训练过程
model.fit(x_train, y_train, batch_size=5,epochs=60)

最终所得模型图为:

 曲线为:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

零基础入门深度学习 | 第四章:卷积神经网络

无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习这个超热的技术,会不会感...

5387
来自专栏WD学习记录

机器学习 学习笔记(23) 卷积网络

卷积网络(convolutional network),也叫做卷积神经网络(convolutional neural network,CNN),是一种专门用来处...

2122
来自专栏杂七杂八

信息增益matlab实现

一般地,一个决策树包含一个根节点,若干个内部节点和若干个叶节点,叶结点对应决策结果,其他每个节点对应于一个属性测试,每个结点包含的样本集合根据属性测试的结果被划...

3638
来自专栏ATYUN订阅号

机器学习中最流行的模型之一,用于分类的支持向量机的完整介绍

支持向量机(SVM)是一个非常强大而多变的机器学习模型,能够执行线性或非线性的分类,回归,甚至异常值检测。它是机器学习中最流行的模型之一,任何对机器学习感兴趣的...

5777
来自专栏人工智能LeadAI

Word2Vec教程-Skip-Gram模型

原文:Word2Vec Tutorial - The Skip-Gram Model(http://mccormickml.com/2016/04/19/wor...

3825
来自专栏杨熹的专栏

TensorFlow-9-词的向量表示

今日资料: https://www.tensorflow.org/tutorials/word2vec 中文版: http://wiki.jikexuey...

3867
来自专栏程序生活

文本分类(下)-卷积神经网络(CNN)在文本分类上的应用

原先写过两篇文章,分别介绍了传统机器学习方法在文本分类上的应用以及CNN原理,然后本篇文章结合两篇论文展开,主要讲述下CNN在文本分类上的应用。前面两部分内容主...

1102
来自专栏机器学习与自然语言处理

Stanford机器学习笔记-8. 支持向量机(SVMs)概述

8. Support Vector Machines(SVMs) Content 8. Support Vector Machines(SVMs)   ...

33912
来自专栏机器学习原理

机器学习(5)——KNNKNNKD Tree

前言:KNN算法以一种“物以类聚”为思想的方法,它不同于前面提到的回归算法,没有损失函数,通过判断预测值离的远近来预测结果。主要分为KNN算法和KD-Tree来...

3475
来自专栏机器学习算法工程师

从AlexNet剖析-卷积网络CNN的一般结构

作者:张旭 编辑:王抒伟 算了 想看多久看多久 零 参考目录: 一、卷积层 1.CNN中卷积层的作用 2.卷积层如何...

8525

扫码关注云+社区