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 相关文章推荐
python中print的不换行即时输出的快速解决方法
Jul 20 Python
Python增量循环删除MySQL表数据的方法
Sep 23 Python
python实现简单中文词频统计示例
Nov 08 Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 Python
Python爬虫实战:分析《战狼2》豆瓣影评
Mar 26 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
Python时间序列处理之ARIMA模型的使用讲解
Apr 02 Python
anaconda如何查看并管理python环境
Jul 05 Python
Python如何操作docker redis过程解析
Aug 10 Python
python中复数的共轭复数知识点总结
Dec 06 Python
Python批量将csv文件转化成xml文件的实例
May 10 Python
Python音乐爬虫完美绕过反爬
Aug 30 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
PHP 中执行系统外部命令
2006/10/09 PHP
php解析json数据实例
2014/08/19 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
js原型链原理看图说明
2012/07/07 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
2017/11/27 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
Python脚本实现网卡流量监控
2015/02/14 Python
Python实现计算最小编辑距离
2016/03/17 Python
python中的格式化输出用法总结
2016/07/28 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
python实现定时发送qq消息
2019/01/18 Python
python实现AES加密与解密
2019/03/28 Python
py-charm延长试用期限实例
2019/12/22 Python
Python urllib3软件包的使用说明
2020/11/18 Python
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
Shopping happy life西班牙:以最优惠的价格提供最好的时尚配饰
2020/03/13 全球购物
试用期自我鉴定范文
2014/03/20 职场文书
大专学生求职自荐信
2014/07/06 职场文书
销售目标责任书
2014/07/23 职场文书
2014县委书记党的群众路线教育实践活动对照检查材料思想汇报
2014/09/22 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
地球上的星星观后感
2015/06/02 职场文书
DSP接收机前端设想
2022/04/05 无线电