第五十一周:文献阅读+CNN-LSTM-AM

目录

摘要

Abstract

文献阅读:基于CNN-LSTM-AM时空深度学习模型的城市供水预测

现存问题

提出方法

创新点

方法论

CNN-LSTM-AM模型

研究实验

数据集

预处理

评估指标

实验过程

合格性验证

模型实现

总结


摘要

本周阅读的文献《Urban Water Supply Forecasting Based on CNN-LSTM-AM Spatiotemporal Deep Learning Model》中,提出了一种时空深度学习模型CNN-LSTM-AM。首先通过CNN识别供水系统中的潜在模式结构,自动提取供水数据的空间特征;其次,将贝叶斯算法和AM引入LSTM网络,实现LSTM网络参数的自动选择和对时间序列数据的自主权值分配,突出重要信息的影响。该模型实现了时空特征的自动提取,对相关供水信息进行了深入挖掘,得到了高精度的预测结果。实验结果表明,提出的CNN-LSTM-AM模型不仅增强了LSTM网络中时间序列相关性信息的捕获和表示,而且提高了模型的训练速度和精度。

Abstract

The literature "Urban Water Supply Forecasting Based on CNN-LSTM-AM Spatial Deep Learning Model" read this week ,proposes a spatiotemporal deep learning model, CNN-LSTM-AM. Firstly, CNN is used to identify potential pattern structures in the water supply system and automatically extract spatial features of water supply data; Secondly, the Bayesian algorithm and AM are introduced into the LSTM network to achieve automatic parameter selection and autonomous weight allocation of time series data, highlighting the influence of important information. This model achieves automatic extraction of spatiotemporal features, conducts in-depth mining of relevant water supply information, and obtains high-precision prediction results. The experimental results show that the proposed CNN-LSTM-AM model not only enhances the capture and representation of time series correlation information in LSTM networks, but also improves the training speed and accuracy of the model.

文献阅读:基于CNN-LSTM-AM时空深度学习模型的城市供水预测

Urban Water Supply Forecasting Based on CNN-LSTM-AM Spatiotemporal Deep Learning Modelicon-default.png?t=N7T8https://ieeexplore.ieee.org/document/10366225PDF:IEEE Xplore Full-Text PDF:

现存问题

城市供水状况受环境气候、政策管理、经济发展、人口规模、生活习惯等诸多因素的影响,其实际变化是线性和非线性的结合,呈现出规律性和随机性,因此供水量预测的特征提取和非线性映射具有挑战性。单个LSTM模型不能同时获得数据中固有的时空特征信息数据,使得高预测精度和广泛化性的实现要求难以满足。

提出方法

提出了一种结合卷积神经网络(CNN)、长短期记忆网络(LSTM)和注意力机制(AM)的时空深度学习模型,用于城市日供水量的预测。该模型旨在提高供水预测的准确性和效率,对城市供水管理具有重要意义。本文提出了一种CNN-LSTM-AM时空深度学习模型,通过充分利用CNN提取数据空间特征、LSTM挖掘时间依赖关系以及注意力机制增强关键信息权重的优势,在城市供水预测任务上取得了良好的效果,这为进一步优化城市供水管理、实现供水资源的合理配置提供了新的思路和方法。

创新点

一、将CNN和LSTM两种深度学习模型结合,充分利用CNN在空间特征提取和LSTM在时间特征挖掘方面的优势,构建了一个时空深度学习框架。单独使用CNN或LSTM都难以同时兼顾数据的空间关联性和时序依赖性,而将二者结合则可以更全面地建模城市供水数据的内在规律。

二、在LSTM网络中引入了注意力机制。传统的LSTM网络在训练过程中容易忽略不同时间节点的重要程度差异,而注意力机制可以自适应地调整不同时刻隐藏层输出的权重,突出关键时刻的作用,削弱非重点时刻的干扰,使得模型更聚焦于影响未来供水量的关键因素。这不仅提高了预测精度,也增强了模型的可解释性。

三、采用贝叶斯优化算法来搜索LSTM网络的最优超参数。深度学习模型的性能对超参数较为敏感,传统的网格搜索和随机搜索方法效率较低。而贝叶斯优化通过构建目标函数的概率模型,利用先验知识引导下一个采样点的选择,在有限的尝试次数内找到最优解,可以大大提升超参数寻优的效率。

方法论

卷积神经网络是具有可学习权重和偏置常数的神经元,由一个或多个卷积层,池化层和全连接层组成。CNN的特点是局部连接,权重共享,池化操作和多层结构。它可以提取数据的局部特征,降低网络训练的难度,实现数据降维,并将低层局部特征联合收割机组合成高层特征。

卷积层是CNN的核心,其思想主要是通过卷积运算提取局部特征的重要部分。卷积滤波器沿着输入数据的所有维度移动,计算输入的权重和点积,然后将其作为新序列的一部分输出。以大小为10的时间窗口为例,如图所示,卷积核的数目直接影响特征提取的抽象性,但过多的卷积核会导致资源的浪费。池化层主要涉及通过最大(Max)或平均(AVG)池化对卷积学习特征图进行子采样。前者输出窗口的最大值,后者输出窗口的平均值。池化层的意义在于它能够降低后续网络层的输入维度,减小模型的大小,提高计算速度,并提高特征映射的鲁棒性以防止过拟合。

在预测领域,CNN可以自动提取数据的空间特征,完成模型拟合。如果将CNN提取的空间特征作为LSTM模型的输入作为训练数据,则可以同时考虑供水系统空间分布的结构和特征,并可以充分提取供水数据变化过程的时间序列依赖性。

在神经网络的学习过程中,加入模型参数可以增强模型的表达能力,存储更多的信息。然而,这种方法也会导致信息过载。AM 基本上实现了对信息重要性的评估和权衡。在训练过程中,不同时间节点的重要性和时间序列数据的特性很容易被LSTM网络忽略。在LSTM网络中加入AM,使得LSTM可以专注于众多输入信息中对当前任务至关重要的信息,减少对其他非重要信息的关注,甚至过滤掉不相关的信息。这种方法不仅解决了信息过载的问题,而且实现了CNN-LSTM的时空可解释性,从而提高了预测的准确性和泛化能力。

CNN-LSTM-AM模型

CNN-LSTM-AM时空深度学习模型利用CNN来提取供水数据中不同特征值之间的空间连接,从而弥补LSTM在捕获数据空间分量方面的不足。AM使LSTM网络能够区分不同供水时间点对未来供水预测的影响,增加关键信息的权重比例,降低非重要信息的权重。该模型能够挖掘存在于大量历史供水数据中的隐含特征,对这些非线性关系进行学习和建模,有效处理长期依赖和短期变化的时空关系,捕捉供水内部因素的复杂性。

  1. 第一层是输入层。对城市供水历史运行数据进行分析,由输入层指定输入格式,数据又被馈送到CNN层。
  2. 第二层是CNN层。采用一维CNN来识别供水系统中的潜在模式结构,自动提取供水数据的空间特征。CNN层主要包括卷积和池化操作,将供水样本数据划分为三列数据矩阵,输入数据采用每次10个供水时间序列数据的滑动窗口形式,形成10 × 3向量。将10 × 3矢量变换成数据特征图,然后进行卷积运算。卷积由一组滤波器组成。滤波器的深度由输入样本数据的深度决定,可以提取不同粒度的特征。通过池化减少卷积层输出的特征向量,减少了数据的空间大小,提高了空间特征提取的鲁棒性。
  3. 第三层是LSTM层。在Reshape操作之后,将CNN输出的特征向量构建成时间序列形式,作为LSTM网络的输入,并使用贝叶斯算法对LSTM网络的参数进行搜索和优化。LSTM网络具有记忆功能,用于提取供水数据的非线性时序变化,通过学习和处理其隐含层的特殊结构,控制历史供水信息的传递,挖掘其时间变化规律。
  4. 第四层是AM层。注意力机制本质上是对信息重要性的评估和权衡,使得模型可以集中关注对当前任务至关重要的信息。这不仅解决了信息过载问题,还增强了模型的可解释性。一方面,AM采用概率加权机制来促进LSTM网络的信息提取,集中在预测任务最重要的时间序列上,最终提高预测精度。另一方面,通过全连通层进行特征合成和维度转换,通过一系列的模型训练学习供水数据,并最终输出预测值。

研究实验

数据集

研究实例选取了中国湖南省株洲市两个不同水厂的日供水量(不考虑其他影响因素),即分别来自水厂A和B的出水表的总读数。自来水厂A共采集2007年1月1日至2012年6月22日供水数据样本2000份,自来水厂B共采集2007年1月1日至2016年12月5日供水数据样本3627份。

预处理

首先,对原始数据进行清理,以消除缺失或异常样本。其次,供水数据平滑和去噪Savitzky-Golay滤波。随后,采用最大-最小归一化方法对数据集进行标准化,降低计算复杂度和加速模型训练。

评估指标

以平均绝对误差(MAE)、均方误差(MSE)、均方根误差(RMSE)和决定系数(R2)为评价指标,对模型的预测效果进行定量验证。MAE响应于预测误差的平均值,MSE指示预测值与真实值之间的差的平方和的平均值,并且RMSE测量预测值与真实值的偏差。三个误差值越小,预测结果越准确。R2的值在[0,1]中。通常,R2值越接近1,模型拟合越好。

实验过程

提出了一种基于CNN-LSTM-AM的城市供水预测时空特征提取模型。流程图如图所示,具体步骤如下:

  1. 供水数据选择数据集的两组数据用于该实验
  2. 在对数据进行预处理后,将其以8:2的比例分为训练集和测试集。在这种情况下,自来水厂A中的1600个数据被用作训练样本,其余400个数据被用作测试样本。然后,以自来水厂B中的2901个数据作为训练样本,其余726个数据作为测试样本。选取训练集中的数据进行训练和学习,并利用测试集中的数据检验模型的预测精度。
  3. 将训练集中的供水数据输入到构建的CNN-LSTM-AM模型中进行训练和学习,以优化模型。
  4. 可以使用贝叶斯优化算法搜索LSTM网络的最佳超参数,并使用K折交叉验证评估每组超参数。
  5. 对训练后的每组超参数计算平均损失函数值,选取平均损失函数值最小的超参数集作为该模型中LSTM网络的最优超参数,得到最优预测模型。
  6. 将测试集数据作为训练好的CNN-LSTM-AM模型的输入进行预测,并输出最终的预测值。根据预测值和真实值计算出预测结果的评价指标。

合格性验证

一、预测值拟合与散点图

为了说明所提出的算法的有效性,将所提出的CNN—LSTM—AM模型与传统的LSTM模型和组合的CNN—LSTM和LSTM—AM模型进行了比较。左(a)中比较了不同模型中的自来水厂A的预测结果,左图(B)中CNN—LSTM—AM模型中自来水厂A的预测值和真值的散点图。不同模型下的自来水厂B的预测结果预测结果比较见右图(a),CNN—LSTM—AM模型下的自来水厂B预测值与真值散点图见右图(B)。

如左图(a)所示,四种模型均具有较好的预测性能,预测曲线能较好地反映真实曲线的变化趋势。尽管如此,当供水量发生突然变化时,如左图(a)和右图(a)中的峰和角,单个LSTM模型无法准确及时地跟随供水量真值的变化进行调整,导致预测误差较大。CNN-LSTM和LSTM-AM模型比单个LSTM模型更好地跟踪供水量真实值的变化,反映出更少的偏差。然而,CNN-LSTM-AM模型更准确地预测了供水量真实值的变化,在一些波动较大的点上拟合得更好,特别是在峰和角点。模型的预测曲线与真实曲线基本吻合,准确捕捉到了数值的微小变化。图中散点图说明了预测值和真实值之间的相关性。从散点图可以看出,预测值与真值基本一致,散点集中分布在直线附近,所提出的CNN-LSTM-AM模型具有强大的学习和预测能力。

二、指标评估

利用MAE、MSE、RMSE和R2等评价指标,在两个测试集上对四种模型的预测结果进行了比较。通过取10次运行的平均值来确定每个指数的最终值。

不同模型中水厂A和B的MAE、MSE、RMSE和R2值分别见表,在自来水厂 A中MAE分别降低18.6%、4%和7.6%;MSE分别降低22.5%、3.3%和3.5%;RMSE分别降低16.1%、0.7%和2.8%;R2分别提高3.8%、0.4%和0.5%。在自来水厂B中,MAE分别降低了29.3%、19.6%和4.5%;MSE分别降低了15.9%、10.5%和2.2%;RMSE分别降低了17.2%、12.0%和3.2%;R2分别提高了2.7%、1.6%和0.2%。从MAE、MSE、RMSE和R2指标的值可以看出,该模型的预测误差小于其他三种模型。历史供水数据隐含着温度、湿度、节假日等相关因素的影响,具有一定的复杂性和不确定性。在复杂城市供水量的预测过程中,CNN—LSTM—AM模型能够更好地挖掘历史数据中隐含的特征,捕捉数据的变化规律,获得更好的预测结果。

模型实现

一、实现步骤

1、CNN对输入数据进行卷积和池化操作,提取空间局部特征:

Feature_CNN = CNN(Input_Data)

2、使用贝叶斯优化器进行调参 

def model_tuning():
    tuner = BayesianOptimization(
        create_model,
        objective='val_accuracy',
        max_trials=10,
        executions_per_trial=2,
        directory='model_tuning',
        project_name='cnn_lstm_am'
    )

    tuner.search(x_train, y_train, epochs=10, validation_data=(x_val, y_val), callbacks=[EarlyStopping(monitor='val_loss', patience=3)])

    best_model = tuner.get_best_models(num_models=1)[0]
    return best_model

3、将CNN提取的特征重塑为时间序列格式,送入LSTM学习时间依赖关系:

H_LSTM = LSTM(Feature_CNN)

其中LSTM的计算过程可以表示为:

f_t = σ(W_f * [h_{t-1}, x_t] + b_f)
i_t = σ(W_i * [h_{t-1}, x_t] + b_i) 
o_t = σ(W_o * [h_{t-1}, x_t] + b_o)
C_t = f_t * C_{t-1} + i_t * tanh(W_C * [h_{t-1}, x_t] + b_C)
h_t = o_t * tanh(C_t)

其中W_f, W_i, W_o, W_C分别为遗忘门、输入门、输出门、候选记忆状态的权重矩阵,h为隐藏状态,C为记忆状态。

4、对LSTM各时间步的隐藏状态计算注意力权重,并加权求和。

a_t = softmax(v * tanh(W_a * h_t + b_a))
Context_Vector = sum(a_t * h_t)

其中v、W_a、b_a为注意力机制的可学习参数。

5、将注意力加权后的上下文向量送入全连接层,输出最终的预测结果:

Prediction = Dense(Context_Vector)

6、损失函数采用均方误差MSE:

Loss = MSE(Prediction, Target)

7、使用Adam优化器最小化损失函数,更新模型参数:

Params = Adam.minimize(Loss)

重复以上过程,直至模型收敛或达到预设的迭代次数。

二、代码分析

模型的预测性能和泛化能力与网络层数成正比,一般来说,增加网络层数可以增加模型的容量和表达能力,提高训练数据的拟合度。此外,过多的网络层数容易导致过拟合,从而降低模型在测试集上的性能,降低泛化能力,并占用大量的计算资源。考虑到在这项研究中选择的历史供水量作为输入变量,模型的每个网络层采用一个层,使用单层CNN网络提取数据的空间特征,使用单层LSTM网络来提取数据的时间特,一个单层的AM网络用于权重分配。

import tensorflow as tf

# 定义超参数
input_size = 10
time_steps = 30
hidden_size = 64
attention_size = 32
output_size = 1

# 定义输入占位符
input_data = tf.placeholder(tf.float32, [None, time_steps, input_size])
target_data = tf.placeholder(tf.float32, [None, output_size])

# 定义CNN层
conv1 = tf.layers.conv1d(inputs=input_data, filters=32, kernel_size=3, activation=tf.nn.relu)
conv2 = tf.layers.conv1d(inputs=conv1, filters=64, kernel_size=3, activation=tf.nn.relu)
cnn_output = tf.layers.flatten(conv2)

# 重塑CNN输出为时间序列格式
lstm_input = tf.reshape(cnn_output, [-1, time_steps, hidden_size])

# 定义LSTM层
lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(hidden_size)
outputs, states = tf.nn.dynamic_rnn(lstm_cell, lstm_input, dtype=tf.float32)

# 定义注意力层
attention_weights = tf.layers.dense(outputs, attention_size, activation=tf.nn.tanh)
attention_weights = tf.layers.dense(attention_weights, 1, activation=None)
attention_weights = tf.nn.softmax(attention_weights, axis=1)
context_vector = tf.reduce_sum(attention_weights * outputs, axis=1)

# 定义输出层
predictions = tf.layers.dense(context_vector, output_size)

# 定义损失函数和优化器
loss = tf.losses.mean_squared_error(target_data, predictions)
optimizer = tf.train.AdamOptimizer().minimize(loss)

代码解释:

  1. 定义输入占位符,包括输入数据(形状为[batch_size, time_steps, input_size])和目标数据(形状为[batch_size, output_size])。

  2. 构建CNN层,这里使用了两层一维卷积,用于提取输入数据的局部特征。卷积结果经过flatten操作转为一维向量。

  3. 将CNN提取的特征重塑为时间序列格式,送入LSTM层。这里使用了基本的LSTM单元,通过dynamic_rnn实现变长序列的计算。

  4. 构建注意力层,先对LSTM的输出进行一次全连接得到注意力权重的中间表示,再通过一次全连接和softmax归一化得到不同时刻的注意力权重。最后通过注意力权重对LSTM输出进行加权求和,得到聚合的上下文向量。

  5. 将上下文向量通过全连接层映射到输出空间,得到最终的预测值。

  6. 定义损失函数为预测值

总结

文章通过大量实验论证了所提出CNN-LSTM-AM模型的优越性,但仍存在一些不足和改进空间:

(1)实验数据仅局限于单一城市,模型的泛化能力有待进一步验证。不同城市在地理环境、人口结构、产业布局等方面存在差异,这些差异可能影响模型的预测表现。

(2)模型目前仅考虑了历史供水量时间序列,而影响城市用水的因素是多方面的。如何将天气、温度、节假日、经济指标等外部因素引入模型,建立更综合的用水预测框架。可以考虑将这些异构数据通过数据融合、特征组合等方式与供水数据集成,扩充模型的输入维度。

(3)最模型解释性有待加强。目前注意力机制可以定性地揭示不同时间步的重要程度,但针对水务的特点,需要给出更直观、可操作的决策依据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/593734.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#知识|上位机项目主窗体设计思路及流程(实例)

哈喽,你好啊,我是雷工! 昨天练习了登录窗体的设计实现,今天练习上位机项目主窗体的设计实现。 01 主窗体效果展示 02 实现步骤 2.1、添加主窗体 添加窗体,名称:FrmMain.cs 2.2、窗体属性设置 将FrmMain窗体属性FormBorderStyle设置为None,无边框; 将FrmMain窗体属性…

C++进阶 | [2] 多态

摘要:多态的概念,多态的条件,虚函数的重写,抽象类,多态的原理,虚函数与虚函数表,与多态有关的问答题 1. Concept 多态的概念:通俗来说,就是多种形态,具体点就…

python数据分析——数据分析的统计推断

数据分析的统计推断 前言一、提出问题二、统计归纳方法三、统计推断四、统计推断步骤4.1.点估计4.2.区间估计4.2.1. 总体方差已知4.2.2总体方差未知 4.3. 假设检验4.4. 假设检验的假设4.5.显著性水平 五、检验统计量六、检验方法七、拒绝域八、假设检验步骤九、重要假设检验方法…

五一假期零碎时间练习学习过的内容(商城版)

目录 1 总览1.1 技术架构1.2 其他1.2.1 数据库1.2.2 后端部分1.2.2.1 复习feign1.2.2.2 复习下网关网关的核心功能特性:网关路由的流程断言工厂过滤器工厂全局过滤器 过滤器执行顺序解决跨域问题 1.2.2.3 es部分复习 1.2.3 前端部分 2 day1 配置网关2.1 任务2.2 网关…

cloudreve手动添加文件

cloudreve导入本地已有的文件,不需要再次上传 需要更新版本到3.1及更高 在【管理面板】-----【文件】导入 如上图: 选择目标用户、原始路径、目的路径,创建导入任务即可!

免费可商用字体素材大全,办公设计字体合集打包166款

一、素材描述 这是一套免费可商用字体素材,这些字体一般会在办公与设计的时候用到,比如,Photoshop、illustrator、Coreldraw、AfterEffects、Indesign、WPS、Office,等等,想要更好更快地办公与设计,字体还…

项目管理【人】概述

系列文章目录 【引论一】项目管理的意义 【引论二】项目管理的逻辑 【环境】概述 【环境】原则 【环境】任务 【环境】绩效 【人】概述 一、项目涉及到的人 1.1 项目发起人、项目指导委员会和变更控制委员会 项目发起人(Sponsor) 项目指导委员会&…

翻译《The Old New Thing》 - Why does the CreateProcess function do autocorrection?

Why does the CreateProcess function do autocorrection? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050623-03/?p35213 Raymond Chen 在 2005 年 6 月 23 日 为什么 CreateProcess 函数会进行自动更正? 译注&#xff…

正则表达式_字符匹配/可选字符集

正则表达式(Regular Expression)也叫匹配模式(Pattern),用来检验字符串是否满足特 定规则,或从字符串中捕获满足特定规则的子串。 字符匹配 最简单的正则表达式由“普通字符”和“通配符”组成。比如“Room\d\d\d”就这样 的正则…

农作物害虫检测数据集VOC+YOLO格式18975张97类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):18975 标注数量(xml文件个数):18975 标注数量(txt文件个数):18975 标…

MySQL-集群的高可用

MMM: Multi-Master Replication Manager for MySQL,Mysql主主复制管理器是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的) …

【重难点算法题】设计哈希集合、哈希映射

文章目录 Tag题目来源解题思路方法一:链地址法 类似题目代码1代码2 写在最后 Tag 【哈希集合】【哈希映射】【链地址法】【数据结构设计】 题目来源 705. 设计哈希集合 解题思路 在解题之前需要先明确两组概念: 哈希表与散列表哈希函数与散列函数 上…

关于图形库

文章目录 1. 概念介绍2. 使用方法2.1 普通路由2.2 命名路由 3. 示例代码4. 内容总结 我们在上一章回中介绍了"使用get显示Dialog"相关的内容,本章回中将介绍使用get进行路由管理.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

分布式领域计算模型及SparkRay实现对比

目录 一、分布式计算领域概览 二、Spark计算模型分析 三、Ray计算模型分析 3.1 需求分析 3.2 系统设计 3.3 系统实现 四、总结 一、分布式计算领域概览 当前分布式计算模型主要分为以下4种: Bulk Synchronous Parallel Model(块同步并行模型&…

视频下载器 UC网盘

老王导航 - 复杂问题找老王,简单问题百度搜 神器啊

入门2-分支结构

【深基2.习6】Apples Prologue / 苹果和虫子 题目描述 小 B 喜欢吃苹果。她现在有 m m m( 1 ≤ m ≤ 100 1 \le m \le 100 1≤m≤100)个苹果,吃完一个苹果需要花费 t t t( 0 ≤ t ≤ 100 0 \le t \le 100 0≤t≤100&#xff0…

500行代码实现贪吃蛇(1)

文章目录 目录1. Win32 API 介绍1.1 Win32 API1.2 控制台程序(Console)1.3 控制台屏幕上的坐标COORD1.4 [GetStdHandle](https://learn.microsoft.com/zh-cn/windows/console/getstdhandle)1.5 [GetConsoleCursorInfo](https://learn.microsoft.com/zh-c…

LAME及 iOS 编译

文章目录 关于 LAME编译 for iOS 关于 LAME 官网:https://lame.sourceforge.io LAME是根据LGPL许可的高质量MPEG音频层III(MP3)编码器。 LAME的开发始于1998年年中左右。Mike Cheng 最开始将它作为针对8hz-MP3编码器源的补丁。在其他人提出…

python学习笔记----异常、模块与包(九)

一、异常 1.1 什么是异常 在Python中,异常是程序执行时发生的错误。当Python检测到一个错误时,它会引发一个异常,这可能是由于多种原因,如尝试除以零、访问不存在的文件,或者尝试从列表中获取不存在的索引等。异常处…

踏春正当时!VELO Prevail Ride带你探索多元骑行潮流体验~

嘿,朋友!踏春正当时嘞!在这个追求个性化与多元化的新时代,骑行爱好者们也开始寻找能适应各种骑行场景的理想坐垫。从悠闲自在的日常通勤,到热血沸腾的公路竞速,再到勇攀高峰的山地探险,维乐VELO…