python神经网络学习 使用Keras进行回归运算


Posted in Python onMay 04, 2022

学习前言

看了好多Github,用于保存模型的库都是Keras,我觉得还是好好学习一下的好

什么是Keras

Keras是一个由Python编写的开源人工神经网络库,可以作Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。

Keras相当于比Tensorflow和Theano更高一层的库,其可以以Tensorflow或者Theano为底层框架,以更加简洁、高效的方式添加代码。

在2018年Tensorflow 2.0.0公开后,Keras被正式确立为Tensorflow高阶API。

Keras中基础的重要函数

1、Sequential

Sequential又称为序贯模型。

序贯模型为最简单的线性、从头到尾的结构顺序,不分叉,是多个网络层的线性堆叠。

在利用Keras进行模型构建前,只需要用如下函数建立模型就够了。

model = Sequential()

此时便已经建立了一个按次序的模型,之后在往模型中添加层的时候,就是按照次序添加的。

2、Dense

Dense用于往Sequential中添加全连接层。全连接层示意图如下。(图片源自百度百科)

python神经网络学习 使用Keras进行回归运算

具体而言,简单的BP神经网络中,输入层到隐含层中间的权值连接,其实与全连接层的意义相同。
在Keras中,如果需要往model中添加全连接层,可使用如下函数。

model.add(Dense(output_dim = 1,input_dim = 1))

此时表示输入维度为1,输出维度也为1。

3、model.compile

model.compile在Keras中的作用主要用于定义loss函数和优化器。

其调用方式如下:

model.compile(loss='mse', optimizer='sgd', metrics=['accuracy'])

其中loss用于定义计算损失的损失函数,其可以选择的内容如下:
1、mse:均方根误差,常用于回归预测。

2、categorical_crossentropy:亦称作多类的对数损失,注意使用该目标函数时,需要将标签转化为形如(nb_samples, nb_classes)的二值序列,常用于分类。

3、sparse_categorical_crossentrop:如上,但接受稀疏标签。

optimizer用于定义优化器,可以使用默认的,也可以从keras.optimizers导出。

其可以选择的内容可以参照Keras中文文档。上文中选择的是随机梯度下降法sgd。

metrics=[‘accuracy’]常用于分类运算中,本例子中不适用,accuracy代表计算分类精确度。

全部代码

该例子为一元线性回归例子。

import numpy as np
from keras.models import Sequential
from keras.layers import Dense  ## 全连接层
import matplotlib.pyplot as plt 
# 生成测试数据
X = np.linspace(-1,1,200)
np.random.shuffle(X)
Y = 0.5*X + 2 + np.random.normal(0,0.05,(200,))
# 划分训练集和测试集
X_train,Y_train = X[:160],Y[:160]
X_test,Y_test = X[160:],Y[160:]
# start
model = Sequential()
model.add(Dense(output_dim = 1,input_dim = 1))
# compile
model.compile(loss = 'mse',optimizer = 'sgd')
# 训练
print("\ntraining")
for step in range(2001):
    cost = model.train_on_batch(X_train,Y_train)
    if step%100 == 0:
        print("tarin_cost:",cost)
# 测试
print("\nTest")
cost = model.evaluate(X_test,Y_test,batch_size=40)
W,b = model.layers[0].get_weights()
print("Weights",W,"biaxes",b)
# 预测结果
Y = model.predict(X_test)
plt.scatter(X_test,Y_test)
plt.plot(X_test,Y)
plt.show()

实现结果为:

tarin_cost: 4.506874
tarin_cost: 0.21098542
tarin_cost: 0.041809298
tarin_cost: 0.013134768
tarin_cost: 0.0055761375
tarin_cost: 0.0035068158
tarin_cost: 0.0029388934
tarin_cost: 0.002783
tarin_cost: 0.0027402083
tarin_cost: 0.002728462
tarin_cost: 0.0027252387
tarin_cost: 0.0027243525
tarin_cost: 0.0027241106
tarin_cost: 0.0027240426
tarin_cost: 0.002724025
tarin_cost: 0.0027240203
tarin_cost: 0.0027240184
tarin_cost: 0.0027240182
tarin_cost: 0.0027240175
tarin_cost: 0.0027240175
tarin_cost: 0.0027240175
Test
40/40 [==============================] - 0s 874us/step
Weights [[0.5041559]] biaxes [1.9961643]

python神经网络学习 使用Keras进行回归运算

以上就是python神经网络学习使用Keras进行回归运算的详细内容!


Tags in this post...

Python 相关文章推荐
Using Django with GAE Python 后台抓取多个网站的页面全文
Feb 17 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
Jul 08 Python
Python中动态检测编码chardet的使用教程
Jul 06 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
Python实现从log日志中提取ip的方法【正则提取】
Mar 31 Python
关于django 数据库迁移(migrate)应该知道的一些事
May 27 Python
python钉钉机器人运维脚本监控实例
Feb 20 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 Python
python中def是做什么的
Jun 10 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 Python
python中数组和列表的简单实例
Mar 25 Python
python神经网络学习 使用Keras进行简单分类
May 04 #Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 #Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 #Python
python开发制作好看的时钟效果
关于的python五子棋的算法
python开发人人对战的五子棋小游戏
python pygame 开发五子棋双人对弈
May 02 #Python
You might like
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
js null,undefined,字符串小结
2010/08/21 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
angular实现spa单页面应用实例
2017/07/10 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
python学生管理系统开发
2019/01/30 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
pycharm 复制代码出现空格的解决方式
2021/01/15 Python
应聘护士自荐信
2013/10/21 职场文书
创建卫生先进单位实施方案
2014/03/10 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
医院护士工作检讨书
2014/10/26 职场文书
2014年残联工作总结
2014/11/21 职场文书
自主招生学校推荐信范文
2015/03/26 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android