python神经网络学习使用Keras进行回归运算
作者:Bubbliiiing 发布时间:2023-01-30 14:08:45
学习前言
看了好多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中添加全连接层。全连接层示意图如下。(图片源自百度百科)
具体而言,简单的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]
来源:https://blog.csdn.net/weixin_44791964/article/details/101168500
猜你喜欢
- 下面的这个函数实现的功能是列出某文件夹下的所有文件,以文件名字母排序,先数字后字母再到中文。<%
- PIL(Python Imaging Library)是Python中一个强大的图像处理库,但目前其只支持到Python2.7pillow是
- "合成大西瓜"这个游戏在年前很火热,还上过微博热搜,最近便玩了一阵还挺有意思的,所以研究了一下小球碰撞原理,自己亲自手写
- 推荐idea最新激活码:最新Idea激活码永久激活(最新测试有效)https://www.jb51.net/article/178193.h
- 1、凸包检测与凸缺陷定义凸包是将最外层的点连接起来构成的凸多边形,它能包含点击中所有的点。物体的凸包检测常应用在物体识别、手势识别及边界检测
- 整理总结一下python中最常用的一些时间戳和时间格式的转换第一部分:获取当前时间和10位13位时间戳import datetime, ti
- 前言A货:什么!你不会背圆周率(鄙夷的眼神) 3.1415926535 8979323846 26433... 桥哥:我会算呀 !
- Vue.js 的核心是一个允许采用简洁的模板语法来声明式的将数据渲染进 DOM,也就是将模板中的文本数据写进DOM中,使用 {{
- 方法一我常用的做法,就是在数据库中加一个删除标识字段,如: isdel=1 这样就代码删除的字段了方法二直接限制mysql删除启动MySQL
- 1 Neural Networks 神经网络1.1 Visualizing the data 可视化数据这部分我们随机选取100个样本并可视
- 前言今天我们简单说下Python函数和控制语句,大纲如下:函数“脏活累活交给函数来做”,首先,看看P
- 思想:4个数字的排列,加上3个运算符的排列,使用后缀表达式的表现如下:情形一:1,2,3,4,+,-,* => 24*24*4情形二:
- 前段时间因为忙一些其它的事情,分享的有些少,最近学习一下redis在Go语言开发中的应用。一、理论知识Redis是一个开源的、使用C语言编写
- Anaconda3-5.1.0-MacOSX-x86_64.pkg 下载安装后,附带安装了pytorch包。需要将环境调整到新的python
- 本文实例讲述了Python基于动态规划算法解决01背包问题。分享给大家供大家参考,具体如下:在01背包问题中,在选择是否要把一个物品加到背包
- 目录技术背景python对Excel表格的处理vaex的安装与使用vaex的安装性能对比数据格式转换总结概要技术背景数据处理是一个当下非常热
- python链表的反转反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输
- int(x, [base])功能:函数的作用是将一个数字或base类型的字符串转换成整数。函数原型:int(x=0)int(x, base=
- Flask解决跨域1、下载flask_cors包pip install flask-cors2、使用flask_cors的CORS代码示例f
- CSS Sprites技术早在2005年 CSS Zengarden 的园主 Dave Shea就在ALA发表对该技术的详细阐述。原先只在C