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六大开源框架对比
Oct 19 Python
Python代码解决RenderView窗口not found问题
Aug 28 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
May 09 Python
python3实现windows下同名进程监控
Jun 21 Python
简单了解python单例模式的几种写法
Jul 01 Python
python内存动态分配过程详解
Jul 15 Python
Python基于pygame实现单机版五子棋对战
Dec 26 Python
Python中如何引入第三方模块
May 27 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
Pygame框架实现飞机大战
Aug 07 Python
Python实现粒子群算法的示例
Feb 14 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
php登录超时检测功能实例详解
2017/03/21 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
2014/11/18 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
jupyter notebook 参数传递给shell命令行实例
2020/04/10 Python
什么是组件架构
2016/05/15 面试题
信息管理员岗位职责
2013/12/01 职场文书
计算机操作自荐信
2013/12/07 职场文书
商务日语专业自荐信
2014/04/17 职场文书
邓小平理论心得体会
2014/09/09 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
java解析XML详解
2021/07/09 Java/Android
Java实现给Word文件添加文字水印
2022/02/15 Java/Android
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android