基于keras的线性方程回归模型
时间:2022-06-19
本文章向大家介绍基于keras的线性方程回归模型,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
0.完整代码
下面一段代码实现了2个功能: 1.用keras库编程实现拟合线性方程的回归模型; 2.对比了4种优化器的性能。
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
from keras import optimizers
if __name__ == '__main__':
w = 2.5
b = 1.5
X = np.linspace(2, 100, 50)
Y = X * w + b
print('X[:5]:', X[:5])
print('Y[:5]:', Y[:5])
adam = optimizers.Adam(lr=0.02)
sgd = optimizers.SGD(lr=0.0002)
adagrad = optimizers.Adagrad(lr=0.3)
adadelta = optimizers.Adadelta(lr=0.3)
optimizer_list = [adam, sgd, adagrad, adadelta]
epochs_list = [100, 200, 500, 1000]
for epochs in epochs_list:
for optimizer in optimizer_list:
model = Sequential()
model.add(Dense(input_dim=1, units=1))
model.compile(loss='mse', optimizer=optimizer)
model.fit(X, Y, steps_per_epoch=10, epochs=epochs, verbose=False)
trained_w = model.layers[0].get_weights()[0][0][0]
trained_b = model.layers[0].get_weights()[1][0]
w_error = abs(trained_w - w)
b_error = abs(trained_b - b)
print('epochs:%d, 优化器种类:%s,t w误差:%.4f, b误差:%.4f'
%(epochs, optimizer.__class__, w_error, b_error))
上面一段代码的运行结果如下:
X[:5]: [ 2. 4. 6. 8. 10.]
Y[:5]: [ 6.5 11.5 16.5 21.5 26.5]
epochs:100, 优化器种类:<class 'keras.optimizers.Adam'>, w误差:0.0083, b误差:0.5539
epochs:100, 优化器种类:<class 'keras.optimizers.SGD'>, w误差:0.0195, b误差:1.3155
epochs:100, 优化器种类:<class 'keras.optimizers.Adagrad'>, w误差:0.0297, b误差:1.9919
epochs:100, 优化器种类:<class 'keras.optimizers.Adadelta'>, w误差:0.4450, b误差:0.9875
epochs:200, 优化器种类:<class 'keras.optimizers.Adam'>, w误差:0.0032, b误差:0.2133
epochs:200, 优化器种类:<class 'keras.optimizers.SGD'>, w误差:0.0181, b误差:1.2160
epochs:200, 优化器种类:<class 'keras.optimizers.Adagrad'>, w误差:0.0046, b误差:0.3051
epochs:200, 优化器种类:<class 'keras.optimizers.Adadelta'>, w误差:0.3739, b误差:0.3786
epochs:500, 优化器种类:<class 'keras.optimizers.Adam'>, w误差:0.0000, b误差:0.0000
epochs:500, 优化器种类:<class 'keras.optimizers.SGD'>, w误差:0.0135, b误差:0.9093
epochs:500, 优化器种类:<class 'keras.optimizers.Adagrad'>, w误差:0.0050, b误差:0.3327
epochs:500, 优化器种类:<class 'keras.optimizers.Adadelta'>, w误差:0.0027, b误差:0.0172
epochs:1000, 优化器种类:<class 'keras.optimizers.Adam'>, w误差:0.0000, b误差:0.0000
epochs:1000, 优化器种类:<class 'keras.optimizers.SGD'>, w误差:0.0083, b误差:0.5563
epochs:1000, 优化器种类:<class 'keras.optimizers.Adagrad'>, w误差:0.0141, b误差:0.9425
epochs:1000, 优化器种类:<class 'keras.optimizers.Adadelta'>, w误差:0.0101, b误差:0.4870
从上面的运行结果可以看出: 在epochs为100时,Adam优化器效果最优,SGD优化器次优; 在epochs为200时,Adam优化器效果最优,Adagrad优化器次优; 在epochs为500时,Adam优化器效果最优,Adadelta优化器次优; 在epochs为1000时,Adam优化器效果最优。
1.结论
对于线性方程的回归模型,使用Adam优化器能够得到不错的拟合效果。
- 八大基础排序总结
- LLDP在ODL中的实现及源码分析(一)
- 在虚拟机间NFV应用上使用采用DPDK的Open vSwitch
- ONOS集群选举分析
- OpenStack Spice协议配置
- 源码解读ODL的MAC地址学习(二)
- SpringBoot开发案例之整合Spring-data-jpa进阶篇
- SpringBoot开发案例之微信小程序录音上传
- SpringBoot开发案例之微信小程序文件上传
- SpringBoot开发案例之配置静态资源文件路径
- 源码解读ODL的MAC地址学习(一)
- SpringBoot开发案例之配置Druid数据库连接池
- SpringBoot开发案例之mail中文附件乱码
- SpringBoot开发案例之整合Swagger篇
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Angular应用的入口
- Angular里的structural directive的一个例子
- Angular条件指令ngIf的一个例子
- Angular的property binding一个例子
- Angular里的按钮事件注册方法一例
- 如何使用Angular的@Input()装饰器
- Angular父子Component之间的事件通知机制
- dotnet OpenXML 解析 PPT 文本字体获取详解
- R练习50题 - 第一期
- [889]python处理HTML转义字符
- python 利用jinja2模板生成html代码实例
- vue项目使用 富文本 封装
- typescript基础篇(5):类
- .Net微服务实战之Kubernetes的搭建与使用
- 使用Prometheus监控Golang服务-基于YoyoGo框架