Python神经网络入门:使用Keras进行回归分析

许南星
许南星
发布时间:2026-10-16| 12人浏览过
原创

本文介绍如何利用Python中的Keras库构建神经网络进行回归运算。Keras作为Tensorflow的高阶API,通过Sequential序贯模型和Dense全连接层简化模型构建。文章详细解析了model.compile中loss函数(如mse)与优化器(如sgd)的配置,并提供了一元线性回归的完整代码示例及运行结果分析。

学习前言

在浏览众多GitHub项目时发现,保存和加载模型的主流库多为Keras,因此深入掌握其用法显得尤为重要。

什么是Keras

Keras是一个基于Python开发的开源人工神经网络库,它可作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,用于深度学习模型的设计、调试、评估、应用及可视化。

Keras可视为比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

在Keras中,model.compile的主要作用是定义损失函数(loss)和优化器(optimizer)。

其调用方式如下所示:

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’]常用于分类运算,用于计算分类精确度;本例为回归任务,故不适用。

全部代码

该示例为一元线性回归的实现。

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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。