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警察与小偷的实现之一客户端与服务端通信实例
Oct 09 Python
Python封装shell命令实例分析
May 05 Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
python开发之函数定义实例分析
Nov 12 Python
Python遍历目录中的所有文件的方法
Jul 08 Python
django模板语法学习之include示例详解
Dec 17 Python
python浪漫表白源码
Apr 05 Python
django搭建项目配置环境和创建表过程详解
Jul 22 Python
Python序列类型的打包和解包实例
Dec 21 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
jupyter notebook清除输出方式
Apr 10 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编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
PHP浮点数精度问题汇总
2015/05/13 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
日期 时间js控件
2009/05/07 Javascript
取选中的radio的值
2010/01/11 Javascript
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
BootStrap selectpicker
2016/06/20 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
Python 实现简单的电话本功能
2015/08/09 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
浅谈html5 响应式布局
2014/12/24 HTML / CSS
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
开放系统互连参考模型
2016/06/29 面试题
开学典礼主持词
2014/03/19 职场文书
法律系毕业生求职信
2014/05/28 职场文书
室内设计专业自荐信
2014/05/31 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
感恩教师节主题班会
2015/08/12 职场文书
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python