目录
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 运行结果
3 高级神经网络Keras+CNN-GRU-Attention负荷预测(Python代码+数据)
链接:https://pan.baidu.com/s/1rE5xcvUBOtVDNFrNcJcXqg
提取码:jntx
--来自百度网盘超级会员V3的分享