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 02 Python
Python编写电话薄实现增删改查功能
May 07 Python
详解python中的文件与目录操作
Jul 11 Python
Python编程之变量赋值操作实例分析
Jul 24 Python
Python编程实现从字典中提取子集的方法分析
Feb 09 Python
python 读取目录下csv文件并绘制曲线v111的方法
Jul 06 Python
python数值基础知识浅析
Nov 19 Python
解决Python使用列表副本的问题
Dec 19 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
Python使用windows设置定时执行脚本
Nov 12 Python
python 爬取吉首大学网站成绩单
Jun 02 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 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创建多级目录)
2014/03/04 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
nodejs实现HTTPS发起POST请求
2015/04/23 NodeJs
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
理解python多线程(python多线程简明教程)
2014/06/09 Python
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
基于Python列表解析(列表推导式)
2018/06/23 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
python实现动态数组的示例代码
2019/07/15 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
单身旅行者的单身假期:Just You
2018/04/08 全球购物
就业推荐自我鉴定
2013/10/06 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
求职简历自荐信
2014/06/18 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
先进事迹材料范文
2014/12/29 职场文书
2015年员工工作总结范文
2015/04/08 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
详解Vue的列表渲染
2021/11/20 Vue.js
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android