用 ConvLSTM 实现 $PM_{10}$ 和 $PM_{2.5}$ 的浓度分布预测
与 ConvLSTM 论文中的实现方式不同。
$$
I_{t} = Sigmoid(Conv(X_t, W_{xi}) + Conv(H_{t-1}, W_{hi}) + b_i)
$$
$$
F_{t} = Sigmoid(Conv(X_t, W_{xf}) + Conv(H_{t-1}, W_{hf}) + b_f)
$$
$$
O_{t} = Sigmoid(Conv(X_t, W_{xo}) + Conv(H_{t-1}, W_{ho}) + b_o)
$$
$$
\tilde{C_t} = Tanh(Conv(X_t, W_{xc}) + Conv(H_{t-1}, W_{hc}) + b_h)
$$
$$
C_t = F_t \odot C_{t-1} + I_t \odot \tilde{C_t}
$$
$$
H_t = O_t \odot Tanh(C_t)
$$
$$
Pred = ReLU(Conv(X_t, W_{xx}) + Conv(H_t, W_{xh}) + b_{p})
$$
$$
R_{t} = Sigmoid(Conv(X_t, W_{xr}) + Conv(H_{t-1}, W_{hr})+b_r)
$$
$$
Z_{t} = Sigmoid(Conv(X_t, W_{xz}) + Conv(H_{t-1}, W_{hz})+b_z)
$$
$$
\tilde{H_t} = Tanh(Conv(X_t, W_{xh})+Conv(R_t \odot H_{t-1}, W_{rh}) + b_{h})
$$
$$
H_t = Z_t \odot H_{t-1} + (1 - Z_t) \odot \tilde{H_t}
$$
$$
Pred = ReLU(Conv(X_t, W_{xx}) + Conv(H_t, W_{xh}) + b_{p})
$$
实现了 ConvLSTM 和 ConvGRU 的基本框架,以及训练所需的代码
- 实现了
use_random_iter = False
的训练方式
- 实现了运行自动保存日志的功能
- 实现了保存和加载功能
- 优化了随机采样功能的逻辑
- 完善了注释
- 预实验结束,正式开始实验
- 实验完成。
- 效果图绘制完成。
[ 1 ]: NIPS 2015: Convolutional LSTM Network
[ 2 ]: 动手学深度学习
[ 3 ]: ConvLSTM实现参考