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与shell的3种交互方式介绍
Apr 11 Python
python使用PyGame播放Midi和Mp3文件的方法
Apr 24 Python
Python新手入门最容易犯的错误总结
Apr 24 Python
Python编程pygame模块实现移动的小车示例代码
Jan 03 Python
python学生信息管理系统
Mar 13 Python
Python+OpenCV采集本地摄像头的视频
Apr 25 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
python批量处理txt文件的实例代码
Jan 13 Python
Python小整数对象池和字符串intern实例解析
Mar 21 Python
详解基于python的全局与局部序列比对的实现(DNA)
Oct 07 Python
python实现图片批量压缩
Apr 24 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
用Socket发送电子邮件
2006/10/09 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
ext 代码生成器
2009/08/07 Javascript
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
JS定时器实例
2013/04/17 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
2013/12/13 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
javascript常用的设计模式
2017/02/09 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
2020/11/02 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
python模块之time模块(实例讲解)
2017/09/13 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
情人节快乐! python绘制漂亮玫瑰
2020/08/18 Python
python解析xml简单示例
2019/06/21 Python
django用户登录验证的完整示例代码
2019/07/21 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
Python新手学习标准库模块命名
2020/05/29 Python
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
高校毕业生登记表自我鉴定
2013/11/03 职场文书
新闻专业推荐信范文
2013/11/20 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
大学生学期个人总结
2015/02/12 职场文书
大学班长竞选稿
2015/11/20 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技