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 struct模块解析
Jun 12 Python
python实现简单socket程序在两台电脑之间传输消息的方法
Mar 13 Python
详细介绍Python中的偏函数
Apr 27 Python
Python实现导出数据生成excel报表的方法示例
Jul 12 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
python读取和保存图片5种方法对比
Sep 12 Python
Python中捕获键盘的方式详解
Mar 28 Python
python自动化之Ansible的安装教程
Jun 13 Python
浅谈Python中文件夹和python package包的区别
Jun 01 Python
2021年值得向Python开发者推荐的VS Code扩展插件
Jan 25 Python
ASP.NET Core中的配置详解
Feb 05 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获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
PHP编程风格规范分享
2014/01/15 PHP
ThinkPHP字符串函数及常用函数汇总
2014/07/18 PHP
javascript中如何处理引号编码"
2013/08/15 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
nodejs结合socket.io实现websocket通信功能的方法
2018/01/12 NodeJs
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
小程序自定义导航栏兼容适配所有机型(附完整案例)
2020/04/26 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
Python中的True,False条件判断实例分析
2015/01/12 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
详解python的webrtc库实现语音端点检测
2017/05/31 Python
python邮件发送smtplib使用详解
2020/06/16 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
教师实习自我鉴定
2013/12/13 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
亮剑观后感600字
2015/06/05 职场文书
雷锋的观后感
2015/06/10 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL
MySQL创建管理RANGE分区
2022/04/13 MySQL