python神经网络学习使用Keras进行回归运算

 更新时间:2022年05月04日 11:48:44   作者:Bubbliiiing  
这篇文章主要为大家介绍了python神经网络学习使用Keras进行回归运算,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

学习前言

看了好多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]

在这里插入图片描述

以上就是python神经网络学习使用Keras进行回归运算的详细内容,更多关于python神经网络Keras回归运算的资料请关注脚本之家其它相关文章!

相关文章

  • Python图像运算之图像阈值化处理详解

    Python图像运算之图像阈值化处理详解

    这篇文章将详细讲解图像阈值化处理,涉及阈值化处理、固定阈值化处理和自适应阈值化处理,这是图像边缘检测或图像增强等处理的基础,感兴趣的可以了解一下
    2022-04-04
  • chatGPT之Python API启用上下文管理案例详解

    chatGPT之Python API启用上下文管理案例详解

    chatGPT已经爆火一段时间了,我想大多数的开发者都在默默的在开发和测试当中,可能也是因为这个原因所以现在很难找到关于开发中遇到的一些坑或者方法和技巧,这篇文章主要介绍了chatGPT之Python API启用上下文管理,需要的朋友可以参考下
    2023-03-03
  • Python使用剪切板的方法

    Python使用剪切板的方法

    这篇文章主要为大家详细介绍了Python使用剪切板的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • python字符串Intern机制详解

    python字符串Intern机制详解

    这篇文章主要介绍了python字符串Intern机制详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • PyTorch详解经典网络ResNet实现流程

    PyTorch详解经典网络ResNet实现流程

    ResNet全称residual neural network,主要是解决过深的网络带来的梯度弥散,梯度爆炸,网络退化(即网络层数越深时,在数据集上表现的性能却越差)的问题
    2022-05-05
  • 跟老齐学Python之私有函数和专有方法

    跟老齐学Python之私有函数和专有方法

    这篇文章是老齐学Python系列文章的一篇,主要介绍了跟私有函数和专有方法,需要的朋友可以参考下
    2014-10-10
  • 跟老齐学Python之大话题小函数(1)

    跟老齐学Python之大话题小函数(1)

    今天本讲要讲什么呢?今天要介绍几个python中的小函数,这几个函数都是从函数式编程借鉴过来的,它们就是:filter、map、reduce、lambda、yield 有了它们,最大的好处是程序更简洁
    2014-10-10
  • 利用Pygame绘制圆环的示例代码

    利用Pygame绘制圆环的示例代码

    这篇文章主要介绍了利用Python中的Pygame模块绘制一个彩色的圆环,文中的示例代码讲解详细,对我们学习Pygame有一定帮助,需要的可以参考一下
    2022-01-01
  • opencv python中cv.approxPolyDP函数详细解释

    opencv python中cv.approxPolyDP函数详细解释

    这篇文章主要给大家介绍了关于opencv python中cv.approxPolyDP函数详细解释的相关资料,OpenCV中的approxPolyDP()函数用于对形状进行逼近,以减少多边形的顶点数,可以用于对图像轮廓点进行多边形拟合,需要的朋友可以参考下
    2024-01-01
  • 聊聊python中的异常嵌套

    聊聊python中的异常嵌套

    这篇文章主要介绍了python中的异常嵌套的相关资料,帮助大家更好的理解和学习python 异常的相关知识,感兴趣的朋友可以了解下
    2020-09-09

最新评论