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中max函数用法实例分析
Jul 17 Python
Python 2与Python 3版本和编码的对比
Feb 14 Python
Python异常处理操作实例详解
May 10 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
Jun 13 Python
pandas值替换方法
Jul 10 Python
TensorFlow打印tensor值的实现方法
Jul 27 Python
python+PyQT实现系统桌面时钟
Jun 16 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 Python
Python的形参和实参使用方式
Dec 24 Python
Keras使用tensorboard显示训练过程的实例
Feb 15 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 Python
Keras 切换后端方式(Theano和TensorFlow)
Jun 19 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
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
2014/07/15 PHP
php使用cookie显示用户上次访问网站日期的方法
2015/01/26 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
javascript 动态生成私有变量访问器
2009/12/06 Javascript
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
2011/07/31 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
python读写二进制文件的方法
2015/05/09 Python
Python实现各种排序算法的代码示例总结
2015/12/11 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
如何开发安全的AJAX应用
2014/03/26 面试题
幼儿园消防安全制度
2014/01/26 职场文书
开学季活动策划方案
2014/02/28 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
总经理检讨书
2014/09/15 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
2014年度个人工作总结
2014/11/07 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
董事长新年致辞
2015/07/29 职场文书
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
python中的装饰器该如何使用
2021/06/18 Python