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服务器拒绝服务攻击代码
Jan 16 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 Python
python使用itchat实现手机控制电脑
Feb 22 Python
python爬取哈尔滨天气信息
Jul 14 Python
Python enumerate函数功能与用法示例
Mar 01 Python
Python实现的企业粉丝抽奖功能示例
Jul 26 Python
Python3.8对可迭代解包的改进及用法详解
Oct 15 Python
python的slice notation的特殊用法详解
Dec 27 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
Python借助with语句实现代码段只执行有限次
Mar 23 Python
python APScheduler执行定时任务介绍
Apr 19 Python
python如何查找列表中元素的位置
May 30 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连接Oracle数据库
2006/10/09 PHP
Thinkphp中的volist标签用法简介
2014/06/18 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
PHP Header失效的原因分析及解决方法
2016/11/16 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
跟我学习javascript的undefined与null
2015/11/17 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
2017/01/04 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
angular6.0开发教程之如何安装angular6.0框架
2018/06/29 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
python滑块验证码的破解实现
2019/11/10 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
作风整顿个人剖析材料
2014/10/06 职场文书
2014年残联工作总结
2014/11/21 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
撤诉书怎么写
2015/05/19 职场文书
2016年会开场白台词
2015/06/01 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python