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中的类与实例
Apr 27 Python
Python的Django框架中settings文件的部署建议
May 30 Python
python列表的常用操作方法小结
May 21 Python
Python selenium文件上传方法汇总
Nov 19 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
Python高级property属性用法实例分析
Nov 19 Python
把vgg-face.mat权重迁移到pytorch模型示例
Dec 27 Python
Python3运算符常见用法分析
Feb 14 Python
pytorch 多分类问题,计算百分比操作
Jul 09 Python
PyQt5 显示超清高分辨率图片的方法
Apr 11 Python
python 自动刷新网页的两种方法
Apr 20 Python
Python Pandas知识点之缺失值处理详解
May 11 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删除页面记录 同时刷新页面 删除条件用GET方式获得
2012/01/10 PHP
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
PHP实现货币换算的方法
2014/11/29 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
JavaScript中两种链式调用实现代码
2011/01/12 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
jquery可定制的在线UEditor编辑器
2015/11/17 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
Vue 简单实现前端权限控制的示例
2020/12/25 Vue.js
gearman的安装启动及python API使用实例
2014/07/08 Python
python实现通过shelve修改对象实例
2014/09/26 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
Python 转义字符详细介绍
2017/03/21 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
Django在win10下的安装并创建工程
2017/11/20 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
大码女装:Ulla Popken
2019/08/06 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
《画风》教学反思
2014/04/16 职场文书
关爱残疾人演讲稿
2014/05/24 职场文书
夏季药店促销方案
2014/08/22 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
浅谈Mysql多表连接查询的执行细节
2021/04/24 MySQL