高级神经网络Keras+CNN-GRU-Attention负荷预测(Python代码实现)

简介: 高级神经网络Keras+CNN-GRU-Attention负荷预测(Python代码实现)

 目录

1 高级神经网络Keras知识点讲解及入门算例

2  CNN-GRU-Attention负荷预测

2.1 Python代码实现

2.2 运行结果

3 高级神经网络Keras+CNN-GRU-Attention负荷预测(Python代码+数据)


1 高级神经网络Keras知识点讲解及入门算例

【数学建模】“华为杯”高级神经网络Keras(Python代码实现)

2  CNN-GRU-Attention负荷预测

2.1 Python代码实现

部分代码:

# 分为输入输出,将前一采样点的天气因素和电力负荷作为输入,后一采样点的作为输出标签

train_X, train_y = train[:, :-1], train[:, -1]

val_X, val_y = val[:, :-1], val[:, -1]

test_X, test_y = test[:, :-1], test[:, -1]

# print(train_X.shape[1])

# 重塑成3D形状 [样例, 时间步, 特征],该3D形状为循环神经网络的固定要求的输出维度要求

train_X = train_X.reshape((train_X.shape[0], 1, train_X.shape[1]))

val_X = val_X.reshape((val_X.shape[0], 1, val_X.shape[1]))

test_X = test_X.reshape((test_X.shape[0], 1, test_X.shape[1]))

# print(train_X)

# window_size设置窗口大小为1,可以理解为时间步为1,特征数为7

window_size = 1

fea_num = 7

# 按照keras的要求搭建神经网络

model = keras.Sequential()

# 设置输入数据的大小

model.add(Input((window_size, fea_num)))

model.add(Reshape((window_size, fea_num, 1)))

model.add(Conv2D(filters=32, kernel_size=3, strides=1, padding="same", activation="relu"))

model.add(MaxPooling2D(pool_size=2, strides=1, padding="same"))

model.add(Dropout(0.3))

model.add(Reshape((window_size, -1)))

model.add(GRU(10, return_sequences=True))

model.add(GRU(20, return_sequences=True))

model.add(Attention(50))

model.add(Dense(10, activation="relu"))

model.add(Dense(1))

print(model.summary())

# 对网络进行编译,选择计算误差的函数,优化器。

model.compile(loss='mse', optimizer='adam', metrics=['mse'])

# 拟合网络,对模型进行50轮的训练,每个批次512个数据,将验证数据集输入网络进行验证。

history = model.fit(train_X, train_y, epochs=50, batch_size=512, verbose=2, validation_data=(val_X, val_y))

model.save('CNN-LSTM-Attention.h5')

# 训练完了以后利用训练好的模型作出预测

yhat = model.predict(test_X)

数据:

2.2 运行结果

image.gif

image.gif

image.gif

image.gif

3 高级神经网络Keras+CNN-GRU-Attention负荷预测(Python代码+数据)

链接:https://pan.baidu.com/s/1rE5xcvUBOtVDNFrNcJcXqg 

提取码:jntx

--来自百度网盘超级会员V3的分享


相关文章
|
1天前
|
监控 Python
Python中的装饰器:提升代码灵活性和可维护性
在Python编程中,装饰器是一种强大的工具,可以提高代码的灵活性和可维护性。本文将深入探讨装饰器的概念、用法和实际应用,帮助读者更好地理解并运用装饰器来优化自己的Python代码。
|
1天前
|
算法 Java 编译器
优化Python代码性能的实用技巧
提高Python代码性能是每个开发者的关注焦点之一。本文将介绍一些实用的技巧和方法,帮助开发者优化他们的Python代码,提升程序的执行效率和性能。
|
4天前
|
Python
Python中的装饰器:提升代码可读性与复用性
Python中的装饰器是一种强大的工具,能够提升代码的可读性和复用性。本文将深入探讨装饰器的原理、用法以及在实际项目中的应用,帮助读者更好地理解和利用这一特性,提升代码质量和开发效率。
|
5天前
|
监控 Python
Python中的装饰器:提升代码可读性与可维护性
Python中的装饰器是一种强大的工具,可以在不修改函数源代码的情况下,增加新的功能。本文将介绍装饰器的基本概念,以及如何使用装饰器来提升代码的可读性和可维护性。通过实例演示,读者将了解装饰器在各种场景下的灵活运用,从而更好地理解并应用于实际开发中。
|
5天前
|
缓存 Python
Python中的装饰器:提升代码可读性与灵活性
在Python编程中,装饰器是一种强大的工具,可以通过在函数或方法周围包装额外的功能来提升代码的可读性和灵活性。本文将深入探讨装饰器的概念、用法和实际应用,帮助读者更好地理解并运用这一Python编程的利器。
|
文字识别 算法 前端开发
100行Python代码实现一款高精度免费OCR工具
近期Github开源了一款基于Python开发、名为Textshot的截图工具,刚开源不到半个月已经500+Star。
100行Python代码实现一款高精度免费OCR工具
|
18天前
|
存储 人工智能 数据处理
Python:编程的艺术与科学的完美交融
Python:编程的艺术与科学的完美交融
19 1
|
5天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
19 5
|
7天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。
10 0
|
8天前
|
测试技术 Python
Python模块化方式编程实践
Python模块化编程提升代码质量,包括:定义专注单一任务的模块;使用`import`导入模块;封装函数和类,明确命名便于重用;避免全局变量降低耦合;使用文档字符串增强可读性;为每个模块写单元测试确保正确性;重用模块作为库;定期维护更新以适应Python新版本。遵循这些实践,可提高代码可读性、重用性和可维护性。
33 2