From 3e6b48c1a750c7d158b2597d16eb8adfe5f80480 Mon Sep 17 00:00:00 2001 From: xiaowuhu Date: Wed, 30 Oct 2019 19:55:37 +0800 Subject: [PATCH] Xiaowuhu/deeprnn (#366) * udy * xdf * finish deep rnn --- .../Data/ch19.name_language.txt | 584 ----- .../Data/names/Arabic.txt | 2000 ----------------- .../Data/names/Korean.txt | 94 - .../Data/names/Polish.txt | 139 -- .../Data/names/Portuguese.txt | 74 - .../Data/names/Scottish.txt | 100 - .../Data/names/Vietnamese.txt | 73 - .../Images/19/deep_rnn_loss.png | Bin 76452 -> 46080 bytes .../19/deeprnn_pm25_fitting_result_48_1.png | Bin 0 -> 33750 bytes .../19/deeprnn_pm25_fitting_result_48_2.png | Bin 0 -> 33798 bytes .../19/deeprnn_pm25_fitting_result_48_4.png | Bin 0 -> 33798 bytes .../19/deeprnn_pm25_fitting_result_48_8.png | Bin 0 -> 33794 bytes .../CharName_1000_4_29_4_10_0.001/init.npz | Bin 0 -> 1352 bytes .../CharName_1000_4_29_4_10_0.001/result.npz | Bin 0 -> 1352 bytes .../CharName_100_16_29_4_16_0.005/init.npz | Bin 0 -> 1448 bytes .../CharName_100_16_29_4_16_0.005/result.npz | Bin 0 -> 1448 bytes .../CharName_100_32_29_10_10_0.1/init.npz | Bin 0 -> 2624 bytes .../CharName_100_32_29_10_10_0.1/result.npz | Bin 0 -> 2624 bytes .../CharName_100_32_29_6_10_0.1/init.npz | Bin 0 -> 1744 bytes .../CharName_100_32_29_6_10_0.1/result.npz | Bin 0 -> 1744 bytes .../CharName_100_32_29_8_10_0.01/init.npz | Bin 0 -> 2168 bytes .../CharName_100_32_29_8_10_0.01/result.npz | Bin 0 -> 2168 bytes .../CharName_100_32_29_8_10_0.1/init.npz | Bin 0 -> 2168 bytes .../CharName_100_32_29_8_10_0.1/result.npz | Bin 0 -> 2168 bytes .../CharName_100_4_29_4_10_0.001/init.npz | Bin 0 -> 1352 bytes .../CharName_100_4_29_4_10_0.001/result.npz | Bin 0 -> 1352 bytes .../CharName_100_4_29_4_11_0.005/init.npz | Bin 0 -> 1368 bytes .../CharName_100_4_29_4_11_0.005/result.npz | Bin 0 -> 1368 bytes .../CharName_100_4_29_4_16_0.005/init.npz | Bin 0 -> 1448 bytes .../CharName_100_4_29_4_16_0.005/result.npz | Bin 0 -> 1448 bytes .../CharName_100_4_29_8_10_0.001/init.npz | Bin 0 -> 2168 bytes .../CharName_100_4_29_8_10_0.001/result.npz | Bin 0 -> 2168 bytes .../CharName_100_4_29_8_10_0.01/init.npz | Bin 0 -> 2168 bytes .../CharName_100_4_29_8_10_0.01/result.npz | Bin 0 -> 2168 bytes .../CharName_200_32_29_8_10_0.1/init.npz | Bin 0 -> 2168 bytes .../CharName_200_32_29_8_10_0.1/result.npz | Bin 0 -> 2168 bytes .../best.npz | Bin 0 -> 1292 bytes .../init.npz | Bin 0 -> 1292 bytes .../best.npz | Bin 0 -> 1292 bytes .../init.npz | Bin 0 -> 1292 bytes .../last.npz | Bin 0 -> 1292 bytes .../ch19-RNNBasic/Level4_Base_PM25_Fitting.py | 4 +- .../best.npz | Bin 0 -> 2520 bytes .../init.npz | Bin 0 -> 2520 bytes .../last.npz | Bin 0 -> 2520 bytes .../best.npz | Bin 0 -> 1912 bytes .../init.npz | Bin 0 -> 1912 bytes .../last.npz | Bin 0 -> 1912 bytes .../best.npz | Bin 0 -> 2104 bytes .../init.npz | Bin 0 -> 2104 bytes .../last.npz | Bin 0 -> 2104 bytes .../best.npz | Bin 0 -> 2104 bytes .../init.npz | Bin 0 -> 2104 bytes .../last.npz | Bin 0 -> 2104 bytes .../best.npz | Bin 0 -> 2520 bytes .../init.npz | Bin 0 -> 2520 bytes .../last.npz | Bin 0 -> 2520 bytes .../best.npz | Bin 0 -> 1312 bytes .../init.npz | Bin 0 -> 1412 bytes .../last.npz | Bin 0 -> 1312 bytes .../best.npz | Bin 0 -> 1620 bytes .../init.npz | Bin 0 -> 1620 bytes .../last.npz | Bin 0 -> 1620 bytes .../init.npz | Bin 0 -> 1456 bytes .../best.npz | Bin 0 -> 1456 bytes .../init.npz | Bin 0 -> 1456 bytes .../last.npz | Bin 0 -> 1456 bytes .../best.npz | Bin 0 -> 2104 bytes .../init.npz | Bin 0 -> 2104 bytes .../last.npz | Bin 0 -> 2104 bytes .../best.npz | Bin 0 -> 2520 bytes .../init.npz | Bin 0 -> 2520 bytes .../last.npz | Bin 0 -> 2520 bytes .../best.npz | Bin 0 -> 1252 bytes .../init.npz | Bin 0 -> 1252 bytes .../last.npz | Bin 0 -> 1252 bytes .../best.npz | Bin 0 -> 1312 bytes .../init.npz | Bin 0 -> 1312 bytes .../last.npz | Bin 0 -> 1312 bytes .../best.npz | Bin 0 -> 1456 bytes .../init.npz | Bin 0 -> 1456 bytes .../last.npz | Bin 0 -> 1456 bytes .../best.npz | Bin 0 -> 1456 bytes .../init.npz | Bin 0 -> 1456 bytes .../last.npz | Bin 0 -> 1456 bytes .../Level5_DeepRnn_2_64_6_4_6_1_0.1/best.npz | Bin 0 -> 1620 bytes .../Level5_DeepRnn_2_64_6_4_6_1_0.1/init.npz | Bin 0 -> 1620 bytes .../Level5_DeepRnn_2_64_6_4_6_1_0.1/last.npz | Bin 0 -> 1620 bytes .../best.npz | Bin 0 -> 1312 bytes .../init.npz | Bin 0 -> 1312 bytes .../last.npz | Bin 0 -> 1312 bytes .../best.npz | Bin 0 -> 1312 bytes .../init.npz | Bin 0 -> 1312 bytes .../last.npz | Bin 0 -> 1312 bytes .../best.npz | Bin 0 -> 1456 bytes .../init.npz | Bin 0 -> 1456 bytes .../best.npz | Bin 0 -> 1312 bytes .../init.npz | Bin 0 -> 1312 bytes .../best.npz | Bin 0 -> 1312 bytes .../init.npz | Bin 0 -> 1312 bytes .../last.npz | Bin 0 -> 1312 bytes .../best.npz | Bin 0 -> 1312 bytes .../init.npz | Bin 0 -> 1312 bytes ...vel5_DeepRnn.py => Level5_DeepRnn_Name.py} | 8 +- .../ch19-RNNBasic/Level5_DeepRnn_PM25.py | 353 +++ .../Level5_NameClassifier_Last.py | 8 +- .../SourceCode/ch19-RNNBasic/ch19.pyproj | 5 +- .../11.0-多入多出双层-非线性多分类.md | 20 +- .../11.1-非线性多分类实现.md | 26 +- .../11.2-非线性多分类的工作原理.md | 16 +- .../12.0-多入多出三层-多变量非线性分类.md | 4 +- .../12.1-三层神经网络的实现.md | 4 + .../12.2-手工测试训练效果.md | 6 + .../12.3-梯度检查.md | 2 + .../12.4-学习率与批大小.md | 20 + .../Step9 - RNN/19.1-初步认识循环神经网络.md | 15 +- .../Step9 - RNN/19.2-二分类循环神经网络.md | 6 +- .../19.3-通用的循环神经网络模型.md | 4 +- .../Step9 - RNN/19.4-空气质量预测.md | 76 +- .../Step9 - RNN/19.5-不定长时序的RNN.md | 44 +- .../Step9 - RNN/19.6-深度循环神经网络.md | 243 +- ...环神经网络.md => 19.7-双向循环神经网络.md} | 0 122 files changed, 680 insertions(+), 3248 deletions(-) delete mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Arabic.txt delete mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Korean.txt delete mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Polish.txt delete mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Portuguese.txt delete mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Scottish.txt delete mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Vietnamese.txt create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/Images/19/deeprnn_pm25_fitting_result_48_1.png create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/Images/19/deeprnn_pm25_fitting_result_48_2.png create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/Images/19/deeprnn_pm25_fitting_result_48_4.png create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/Images/19/deeprnn_pm25_fitting_result_48_8.png create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_1000_4_29_4_10_0.001/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_1000_4_29_4_10_0.001/result.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_16_29_4_16_0.005/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_16_29_4_16_0.005/result.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_32_29_10_10_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_32_29_10_10_0.1/result.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_32_29_6_10_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_32_29_6_10_0.1/result.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_32_29_8_10_0.01/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_32_29_8_10_0.01/result.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_32_29_8_10_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_32_29_8_10_0.1/result.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_4_10_0.001/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_4_10_0.001/result.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_4_11_0.005/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_4_11_0.005/result.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_4_16_0.005/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_4_16_0.005/result.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_8_10_0.001/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_8_10_0.001/result.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_8_10_0.01/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_8_10_0.01/result.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_200_32_29_8_10_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_200_32_29_8_10_0.1/result.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level3_Fitting_100_64_48_6_4_1_0.1/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level3_Fitting_100_64_48_6_4_1_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level3_Fitting_200_64_48_6_4_1_0.1/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level3_Fitting_200_64_48_6_4_1_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level3_Fitting_200_64_48_6_4_1_0.1/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_16_29_4_8_16_0.01/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_16_29_4_8_16_0.01/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_16_29_4_8_16_0.01/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_4_10_0.1/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_4_10_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_4_10_0.1/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_6_10_0.05/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_6_10_0.05/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_6_10_0.05/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_6_10_0.1/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_6_10_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_6_10_0.1/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_4_29_4_8_16_0.01/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_4_29_4_8_16_0.01/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_4_29_4_8_16_0.01/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_2_1_0.1/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_2_1_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_2_1_0.1/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_6_1_0.1/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_6_1_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_6_1_0.1/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_6_2_1_0.01/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_6_2_1_0.1/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_6_2_1_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_6_2_1_0.1/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_32_29_4_6_10_0.05/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_32_29_4_6_10_0.05/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_32_29_4_6_10_0.05/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_4_29_4_8_16_0.01/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_4_29_4_8_16_0.01/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_4_29_4_8_16_0.01/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_3_2_1_0.1/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_3_2_1_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_3_2_1_0.1/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_4_2_1_0.1/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_4_2_1_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_4_2_1_0.1/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.01/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.01/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.01/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.05/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.05/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.05/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_2_64_6_4_6_1_0.1/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_2_64_6_4_6_1_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_2_64_6_4_6_1_0.1/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.05/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.05/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.05/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.1/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.1/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.1/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_6_2_1_0.05/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_6_2_1_0.05/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_500_64_6_4_2_1_0.01/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_500_64_6_4_2_1_0.01/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_500_64_6_4_2_1_0.05/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_500_64_6_4_2_1_0.05/init.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_500_64_6_4_2_1_0.05/last.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_500_64_6_4_2_1_0.1/best.npz create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_500_64_6_4_2_1_0.1/init.npz rename B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/{Level5_DeepRnn.py => Level5_DeepRnn_Name.py} (99%) create mode 100644 B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_PM25.py rename B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/{19.5-双向循环神经网络.md => 19.7-双向循环神经网络.md} (100%) diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/ch19.name_language.txt b/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/ch19.name_language.txt index 501968c4..6a52e7b9 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/ch19.name_language.txt +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/ch19.name_language.txt @@ -1,111 +1,3 @@ -khoury Arabic -nahas Arabic -daher Arabic -gerges Arabic -nazari Arabic -maalouf Arabic -naifeh Arabic -guirguis Arabic -baba Arabic -sabbagh Arabic -attia Arabic -tahan Arabic -haddad Arabic -aswad Arabic -najjar Arabic -dagher Arabic -maloof Arabic -isa Arabic -asghar Arabic -nader Arabic -gaber Arabic -abboud Arabic -zogby Arabic -srour Arabic -bahar Arabic -mustafa Arabic -hanania Arabic -tuma Arabic -saliba Arabic -shamoon Arabic -handal Arabic -amari Arabic -atiyeh Arabic -said Arabic -khouri Arabic -sleiman Arabic -seif Arabic -harb Arabic -asker Arabic -antar Arabic -awad Arabic -shadid Arabic -hajjar Arabic -kalb Arabic -bazzi Arabic -masih Arabic -ghanem Arabic -antoun Arabic -sarraf Arabic -malouf Arabic -naser Arabic -shamon Arabic -wasem Arabic -kanaan Arabic -boutros Arabic -moghadam Arabic -cham Arabic -assaf Arabic -quraishi Arabic -shalhoub Arabic -sabbag Arabic -mifsud Arabic -shammas Arabic -tannous Arabic -rahal Arabic -almasi Arabic -basara Arabic -bata Arabic -shamoun Arabic -deeb Arabic -touma Arabic -asfour Arabic -hadad Arabic -arian Arabic -kouri Arabic -toma Arabic -halabi Arabic -fakhoury Arabic -mansour Arabic -sayegh Arabic -morcos Arabic -ganim Arabic -hakimi Arabic -ganem Arabic -sarkis Arabic -maroun Arabic -bishara Arabic -ba Arabic -bitar Arabic -koury Arabic -nassar Arabic -haik Arabic -salib Arabic -botros Arabic -essa Arabic -kattan Arabic -kassis Arabic -qureshi Arabic -ghannam Arabic -kassab Arabic -baz Arabic -abadi Arabic -issa Arabic -boulos Arabic -samaha Arabic -safar Arabic -mikhail Arabic -totah Arabic ang Chinese auyong Chinese bai Chinese @@ -4213,412 +4105,6 @@ yoshizawa Japanese yuasa Japanese yuhara Japanese yunokawa Japanese -ahn Korean -baik Korean -bang Korean -byon Korean -cha Korean -chang Korean -chi Korean -chin Korean -cho Korean -choe Korean -choi Korean -chong Korean -chou Korean -chu Korean -chun Korean -chung Korean -chweh Korean -gil Korean -gu Korean -gwang Korean -ha Korean -han Korean -ho Korean -hong Korean -hung Korean -hwang Korean -hyun Korean -jang Korean -jeon Korean -jeong Korean -jo Korean -jon Korean -jong Korean -jung Korean -kang Korean -kim Korean -ko Korean -koo Korean -ku Korean -kwak Korean -kwang Korean -lee Korean -li Korean -lim Korean -ma Korean -mo Korean -moon Korean -nam Korean -ngai Korean -noh Korean -oh Korean -pae Korean -pak Korean -park Korean -ra Korean -rhee Korean -rheem Korean -ri Korean -rim Korean -ron Korean -ryom Korean -ryoo Korean -ryu Korean -san Korean -seo Korean -seok Korean -shim Korean -shin Korean -shon Korean -si Korean -sin Korean -so Korean -son Korean -song Korean -sook Korean -suh Korean -suk Korean -sun Korean -sung Korean -tsai Korean -wang Korean -woo Korean -yang Korean -yeo Korean -yeon Korean -yi Korean -yim Korean -yoo Korean -yoon Korean -you Korean -youj Korean -youn Korean -yu Korean -yun Korean -adamczak Polish -adamczyk Polish -andrysiak Polish -auttenberg Polish -bartosz Polish -bernard Polish -bobienski Polish -bosko Polish -broz Polish -brzezicki Polish -budny Polish -bukoski Polish -bukowski Polish -chlebek Polish -chmiel Polish -czajka Polish -czajkowski Polish -dubanowski Polish -dubicki Polish -dunajski Polish -dziedzic Polish -fabian Polish -filipek Polish -filipowski Polish -gajos Polish -gniewek Polish -gomolka Polish -gomulka Polish -gorecki Polish -gorka Polish -gorski Polish -grzeskiewicz Polish -gwozdek Polish -jagoda Polish -janda Polish -janowski Polish -jaskolski Polish -jaskulski Polish -jedynak Polish -jelen Polish -jez Polish -jordan Polish -kaczka Polish -kaluza Polish -kaminski Polish -kasprzak Polish -kava Polish -kedzierski Polish -kijek Polish -klimek Polish -kosmatka Polish -kowalczyk Polish -kowalski Polish -koziol Polish -kozlow Polish -kozlowski Polish -krakowski Polish -krol Polish -kumiega Polish -lawniczak Polish -lis Polish -majewski Polish -malinowski Polish -maly Polish -marek Polish -marszaek Polish -maslanka Polish -mencher Polish -miazga Polish -michel Polish -mikolajczak Polish -mozdzierz Polish -niemczyk Polish -niemec Polish -nosek Polish -nowak Polish -pakulski Polish -pasternack Polish -pasternak Polish -paszek Polish -piatek Polish -piontek Polish -pokorny Polish -poplawski Polish -rog Polish -rudaski Polish -rudawski Polish -rusnak Polish -rutkowski Polish -sadowski Polish -salomon Polish -serafin Polish -sienkiewicz Polish -sierzant Polish -sitko Polish -skala Polish -slaski Polish -slazak Polish -slusarczyk Polish -slusarski Polish -smolak Polish -sniegowski Polish -sobol Polish -sokal Polish -sokolof Polish -sokoloff Polish -sokolofsky Polish -sokolowski Polish -sokolsky Polish -sowka Polish -stanek Polish -starek Polish -stawski Polish -stolarz Polish -szczepanski Polish -szewc Polish -szwarc Polish -szweda Polish -szwedko Polish -walentowicz Polish -warszawski Polish -wawrzaszek Polish -wiater Polish -winograd Polish -winogrodzki Polish -wojda Polish -wojewodka Polish -wojewodzki Polish -wronski Polish -wyrick Polish -wyrzyk Polish -zabek Polish -zawisza Polish -zdunowski Polish -zielinski Polish -ziemniak Polish -zientek Polish -zuraw Polish -abreu Portuguese -albuquerque Portuguese -almeida Portuguese -alves Portuguese -araujo Portuguese -araullo Portuguese -barros Portuguese -basurto Portuguese -belo Portuguese -cabral Portuguese -campos Portuguese -cardozo Portuguese -castro Portuguese -coelho Portuguese -costa Portuguese -crespo Portuguese -cruz Portuguese -dcruz Portuguese -dcruze Portuguese -delgado Portuguese -desantigo Portuguese -duarte Portuguese -esteves Portuguese -fernandes Portuguese -ferreira Portuguese -ferreiro Portuguese -ferro Portuguese -fonseca Portuguese -franco Portuguese -freitas Portuguese -garcia Portuguese -gaspar Portuguese -gomes Portuguese -gouveia Portuguese -guerra Portuguese -henriques Portuguese -lobo Portuguese -machado Portuguese -madeira Portuguese -magalhaes Portuguese -maria Portuguese -mata Portuguese -mateus Portuguese -matos Portuguese -medeiros Portuguese -melo Portuguese -mendes Portuguese -moreno Portuguese -nunes Portuguese -palmeiro Portuguese -paredes Portuguese -pereira Portuguese -pinheiro Portuguese -pinho Portuguese -ramires Portuguese -ribeiro Portuguese -rios Portuguese -rocha Portuguese -rodrigues Portuguese -romao Portuguese -rosario Portuguese -salazar Portuguese -santana Portuguese -santiago Portuguese -santos Portuguese -serafim Portuguese -silva Portuguese -silveira Portuguese -simoes Portuguese -soares Portuguese -souza Portuguese -torres Portuguese -vargas Portuguese -ventura Portuguese -smith Scottish -brown Scottish -wilson Scottish -campbell Scottish -stewart Scottish -thomson Scottish -robertson Scottish -anderson Scottish -macdonald Scottish -scott Scottish -reid Scottish -murray Scottish -taylor Scottish -clark Scottish -ross Scottish -watson Scottish -morrison Scottish -paterson Scottish -young Scottish -mitchell Scottish -walker Scottish -fraser Scottish -miller Scottish -mcdonald Scottish -gray Scottish -henderson Scottish -hamilton Scottish -johnston Scottish -duncan Scottish -graham Scottish -ferguson Scottish -kerr Scottish -davidson Scottish -bell Scottish -cameron Scottish -kelly Scottish -martin Scottish -hunter Scottish -allan Scottish -mackenzie Scottish -grant Scottish -simpson Scottish -mackay Scottish -mclean Scottish -macleod Scottish -black Scottish -russell Scottish -marshall Scottish -wallace Scottish -gibson Scottish -kennedy Scottish -gordon Scottish -burns Scottish -sutherland Scottish -stevenson Scottish -munro Scottish -milne Scottish -watt Scottish -murphy Scottish -craig Scottish -wood Scottish -muir Scottish -wright Scottish -mckenzie Scottish -ritchie Scottish -johnstone Scottish -sinclair Scottish -white Scottish -mcmillan Scottish -williamson Scottish -dickson Scottish -hughes Scottish -cunningham Scottish -mckay Scottish -bruce Scottish -millar Scottish -crawford Scottish -mcintosh Scottish -douglas Scottish -docherty Scottish -king Scottish -jones Scottish -boyle Scottish -fleming Scottish -mcgregor Scottish -aitken Scottish -christie Scottish -shaw Scottish -maclean Scottish -jamieson Scottish -mcintyre Scottish -hay Scottish -lindsay Scottish -alexander Scottish -ramsay Scottish -mccallum Scottish -whyte Scottish -jackson Scottish -mclaughlin Scottish -hill Scottish abana Spanish abano Spanish abarca Spanish @@ -4912,73 +4398,3 @@ zapatero Spanish zavala Spanish zubizarreta Spanish zuniga Spanish -nguyen Vietnamese -tron Vietnamese -le Vietnamese -pham Vietnamese -huynh Vietnamese -hoang Vietnamese -phan Vietnamese -vu Vietnamese -vo Vietnamese -dang Vietnamese -bui Vietnamese -do Vietnamese -ho Vietnamese -ngo Vietnamese -duong Vietnamese -ly Vietnamese -an Vietnamese -bach Vietnamese -banh Vietnamese -cao Vietnamese -chau Vietnamese -chu Vietnamese -chung Vietnamese -diep Vietnamese -doan Vietnamese -dam Vietnamese -dao Vietnamese -dinh Vietnamese -giang Vietnamese -ha Vietnamese -han Vietnamese -kieu Vietnamese -kim Vietnamese -la Vietnamese -lac Vietnamese -lam Vietnamese -lieu Vietnamese -luc Vietnamese -luong Vietnamese -luu Vietnamese -ma Vietnamese -mach Vietnamese -mai Vietnamese -nghiem Vietnamese -phi Vietnamese -pho Vietnamese -phung Vietnamese -quach Vietnamese -quang Vietnamese -quyen Vietnamese -ta Vietnamese -thach Vietnamese -thai Vietnamese -sai Vietnamese -thi Vietnamese -than Vietnamese -thao Vietnamese -thuy Vietnamese -tieu Vietnamese -to Vietnamese -ton Vietnamese -tong Vietnamese -trang Vietnamese -trieu Vietnamese -trinh Vietnamese -truong Vietnamese -van Vietnamese -vinh Vietnamese -vuong Vietnamese -vuu Vietnamese diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Arabic.txt b/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Arabic.txt deleted file mode 100644 index 292459b8..00000000 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Arabic.txt +++ /dev/null @@ -1,2000 +0,0 @@ -Khoury -Nahas -Daher -Gerges -Nazari -Maalouf -Gerges -Naifeh -Guirguis -Baba -Sabbagh -Attia -Tahan -Haddad -Aswad -Najjar -Dagher -Maloof -Isa -Asghar -Nader -Gaber -Abboud -Maalouf -Zogby -Srour -Bahar -Mustafa -Hanania -Daher -Tuma -Nahas -Saliba -Shamoon -Handal -Baba -Amari -Bahar -Atiyeh -Said -Khouri -Tahan -Baba -Mustafa -Guirguis -Sleiman -Seif -Dagher -Bahar -Gaber -Harb -Seif -Asker -Nader -Antar -Awad -Srour -Shadid -Hajjar -Hanania -Kalb -Shadid -Bazzi -Mustafa -Masih -Ghanem -Haddad -Isa -Antoun -Sarraf -Sleiman -Dagher -Najjar -Malouf -Nahas -Naser -Saliba -Shamon -Malouf -Kalb -Daher -Maalouf -Wasem -Kanaan -Naifeh -Boutros -Moghadam -Masih -Sleiman -Aswad -Cham -Assaf -Quraishi -Shalhoub -Sabbag -Mifsud -Gaber -Shammas -Tannous -Sleiman -Bazzi -Quraishi -Rahal -Cham -Ghanem -Ghanem -Naser -Baba -Shamon -Almasi -Basara -Quraishi -Bata -Wasem -Shamoun -Deeb -Touma -Asfour -Deeb -Hadad -Naifeh -Touma -Bazzi -Shamoun -Nahas -Haddad -Arian -Kouri -Deeb -Toma -Halabi -Nazari -Saliba -Fakhoury -Hadad -Baba -Mansour -Sayegh -Antar -Deeb -Morcos -Shalhoub -Sarraf -Amari -Wasem -Ganim -Tuma -Fakhoury -Hadad -Hakimi -Nader -Said -Ganim -Daher -Ganem -Tuma -Boutros -Aswad -Sarkis -Daher -Toma -Boutros -Kanaan -Antar -Gerges -Kouri -Maroun -Wasem -Dagher -Naifeh -Bishara -Ba -Cham -Kalb -Bazzi -Bitar -Hadad -Moghadam -Sleiman -Shamoun -Antar -Atiyeh -Koury -Nahas -Kouri -Maroun -Nassar -Sayegh -Haik -Ghanem -Sayegh -Salib -Cham -Bata -Touma -Antoun -Antar -Bata -Botros -Shammas -Ganim -Sleiman -Seif -Moghadam -Ba -Tannous -Bazzi -Seif -Salib -Hadad -Quraishi -Halabi -Essa -Bahar -Kattan -Boutros -Nahas -Sabbagh -Kanaan -Sayegh -Said -Botros -Najjar -Toma -Bata -Atiyeh -Halabi -Tannous -Kouri -Shamoon -Kassis -Haddad -Tuma -Mansour -Antar -Kassis -Kalb -Basara -Rahal -Mansour -Handal -Morcos -Fakhoury -Hadad -Morcos -Kouri -Quraishi -Almasi -Awad -Naifeh -Koury -Asker -Maroun -Fakhoury -Sabbag -Sarraf -Shamon -Assaf -Boutros -Malouf -Nassar -Qureshi -Ghanem -Srour -Almasi -Qureshi -Ghannam -Mustafa -Najjar -Kassab -Shadid -Shamoon -Morcos -Atiyeh -Isa -Ba -Baz -Asker -Seif -Asghar -Hajjar -Deeb -Essa -Qureshi -Abboud -Ganem -Haddad -Koury -Nassar -Abadi -Toma -Tannous -Harb -Issa -Khouri -Mifsud -Kalb -Gaber -Ganim -Boulos -Samaha -Haddad -Sabbag -Wasem -Dagher -Rahal -Atiyeh -Antar -Asghar -Mansour -Awad -Boulos -Sarraf -Deeb -Abadi -Nazari -Daher -Gerges -Shamoon -Gaber -Amari -Sarraf -Nazari -Saliba -Naifeh -Nazari -Hakimi -Shamon -Abboud -Quraishi -Tahan -Safar -Hajjar -Srour -Gaber -Shalhoub -Attia -Safar -Said -Ganem -Nader -Asghar -Mustafa -Said -Antar -Botros -Nader -Ghannam -Asfour -Tahan -Mansour -Attia -Touma -Najjar -Kassis -Abboud -Bishara -Bazzi -Shalhoub -Shalhoub -Safar -Khoury -Nazari -Sabbag -Sleiman -Atiyeh -Kouri -Bitar -Zogby -Ghanem -Assaf -Abadi -Arian -Shalhoub -Khoury -Morcos -Shamon -Wasem -Abadi -Antoun -Baz -Naser -Assaf -Saliba -Nader -Mikhail -Naser -Daher -Morcos -Awad -Nahas -Sarkis -Malouf -Mustafa -Fakhoury -Ghannam -Shadid -Gaber -Koury -Atiyeh -Shamon -Boutros -Sarraf -Arian -Fakhoury -Abadi -Kassab -Nahas -Quraishi -Mansour -Samaha -Wasem -Seif -Fakhoury -Saliba -Cham -Bahar -Shamoun -Essa -Shamon -Asfour -Bitar -Cham -Tahan -Tannous -Daher -Khoury -Shamon -Bahar -Quraishi -Ghannam -Kassab -Zogby -Basara -Shammas -Arian -Sayegh -Naifeh -Mifsud -Sleiman -Arian -Kassis -Shamoun -Kassis -Harb -Mustafa -Boulos -Asghar -Shamon -Kanaan -Atiyeh -Kassab -Tahan -Bazzi -Kassis -Qureshi -Basara -Shalhoub -Sayegh -Haik -Attia -Maroun -Kassis -Sarkis -Harb -Assaf -Kattan -Antar -Sleiman -Touma -Sarraf -Bazzi -Boulos -Baz -Issa -Shamon -Shadid -Deeb -Sabbag -Wasem -Awad -Mansour -Saliba -Fakhoury -Arian -Bishara -Dagher -Bishara -Koury -Fakhoury -Naser -Nader -Antar -Gerges -Handal -Hanania -Shadid -Gerges -Kassis -Essa -Assaf -Shadid -Seif -Shalhoub -Shamoun -Hajjar -Baba -Sayegh -Mustafa -Sabbagh -Isa -Najjar -Tannous -Hanania -Ganem -Gerges -Fakhoury -Mifsud -Nahas -Bishara -Bishara -Abadi -Sarkis -Masih -Isa -Attia -Kalb -Essa -Boulos -Basara -Halabi -Halabi -Dagher -Attia -Kassis -Tuma -Gerges -Ghannam -Toma -Baz -Asghar -Zogby -Aswad -Hadad -Dagher -Naser -Shadid -Atiyeh -Zogby -Abboud -Tannous -Khouri -Atiyeh -Ganem -Maalouf -Isa -Maroun -Issa -Khouri -Harb -Nader -Awad -Nahas -Said -Baba -Totah -Ganim -Handal -Mansour -Basara -Malouf -Said -Botros -Samaha -Safar -Tahan -Botros -Shamoun -Handal -Sarraf -Malouf -Bishara -Aswad -Khouri -Baz -Asker -Toma -Koury -Gerges -Bishara -Boulos -Najjar -Aswad -Shamon -Kouri -Srour -Assaf -Tannous -Attia -Mustafa -Kattan -Asghar -Amari -Shadid -Said -Bazzi -Masih -Antar -Fakhoury -Shadid -Masih -Handal -Sarraf -Kassis -Salib -Hajjar -Totah -Koury -Totah -Mustafa -Sabbagh -Moghadam -Toma -Srour -Almasi -Totah -Maroun -Kattan -Naifeh -Sarkis -Mikhail -Nazari -Boutros -Guirguis -Gaber -Kassis -Masih -Hanania -Maloof -Quraishi -Cham -Hadad -Tahan -Bitar -Arian -Gaber -Baz -Mansour -Kalb -Sarkis -Attia -Antar -Asfour -Said -Essa -Koury -Hadad -Tuma -Moghadam -Sabbagh -Amari -Dagher -Srour -Antoun -Sleiman -Maroun -Tuma -Nahas -Hanania -Sayegh -Amari -Sabbagh -Said -Cham -Asker -Nassar -Bitar -Said -Dagher -Safar -Khouri -Totah -Khoury -Salib -Basara -Abboud -Baz -Isa -Cham -Amari -Mifsud -Hadad -Rahal -Khoury -Bazzi -Basara -Totah -Ghannam -Koury -Malouf -Zogby -Zogby -Boutros -Nassar -Handal -Hajjar -Maloof -Abadi -Maroun -Mifsud -Kalb -Amari -Hakimi -Boutros -Masih -Kattan -Haddad -Arian -Nazari -Assaf -Attia -Wasem -Gerges -Asker -Tahan -Fakhoury -Shadid -Sarraf -Attia -Naifeh -Aswad -Deeb -Tannous -Totah -Cham -Baba -Najjar -Hajjar -Shamoon -Handal -Awad -Guirguis -Awad -Ganem -Naifeh -Khoury -Hajjar -Moghadam -Mikhail -Ghannam -Guirguis -Tannous -Kanaan -Handal -Khoury -Kalb -Qureshi -Najjar -Atiyeh -Gerges -Nassar -Tahan -Hadad -Fakhoury -Salib -Wasem -Bitar -Fakhoury -Attia -Awad -Totah -Deeb -Touma -Botros -Nazari -Nahas -Kouri -Ghannam -Assaf -Asfour -Sarraf -Naifeh -Toma -Asghar -Abboud -Issa -Sabbag -Sabbagh -Isa -Koury -Kattan -Shamoon -Rahal -Kalb -Naser -Masih -Sayegh -Dagher -Asker -Maroun -Dagher -Sleiman -Botros -Sleiman -Harb -Tahan -Tuma -Said -Hadad -Samaha -Harb -Cham -Atiyeh -Haik -Malouf -Bazzi -Harb -Malouf -Ghanem -Cham -Asghar -Samaha -Khouri -Nassar -Rahal -Baz -Kalb -Rahal -Gerges -Cham -Sayegh -Shadid -Morcos -Shamoon -Hakimi -Shamoon -Qureshi -Ganim -Shadid -Khoury -Boutros -Hanania -Antoun -Naifeh -Deeb -Samaha -Awad -Asghar -Awad -Saliba -Shamoun -Mikhail -Hakimi -Mikhail -Cham -Halabi -Sarkis -Kattan -Nazari -Safar -Morcos -Khoury -Essa -Nassar -Haik -Shadid -Fakhoury -Najjar -Arian -Botros -Daher -Saliba -Saliba -Kattan -Hajjar -Nader -Daher -Nassar -Maroun -Harb -Nassar -Antar -Shammas -Toma -Antar -Koury -Nader -Botros -Bahar -Najjar -Maloof -Salib -Malouf -Mansour -Bazzi -Atiyeh -Kanaan -Bishara -Hakimi -Saliba -Tuma -Mifsud -Hakimi -Assaf -Nassar -Sarkis -Bitar -Isa -Halabi -Shamon -Qureshi -Bishara -Maalouf -Srour -Boulos -Safar -Shamoun -Ganim -Abadi -Koury -Shadid -Zogby -Boutros -Shadid -Hakimi -Bazzi -Isa -Totah -Salib -Shamoon -Gaber -Antar -Antar -Najjar -Fakhoury -Malouf -Salib -Rahal -Boulos -Attia -Said -Kassis -Bahar -Bazzi -Srour -Antar -Nahas -Kassis -Samaha -Quraishi -Asghar -Asker -Antar -Totah -Haddad -Maloof -Kouri -Basara -Bata -Antar -Shammas -Arian -Gerges -Seif -Almasi -Tuma -Shamoon -Khoury -Hakimi -Abboud -Baz -Seif -Issa -Nazari -Harb -Shammas -Amari -Totah -Malouf -Sarkis -Naser -Zogby -Handal -Naifeh -Cham -Hadad -Gerges -Kalb -Shalhoub -Saliba -Tannous -Tahan -Tannous -Kassis -Shadid -Sabbag -Tahan -Abboud -Nahas -Shamoun -Dagher -Botros -Amari -Maalouf -Awad -Gerges -Shamoon -Haddad -Salib -Attia -Kassis -Sleiman -Maloof -Maroun -Koury -Asghar -Kalb -Asghar -Touma -Ganim -Rahal -Haddad -Zogby -Mansour -Guirguis -Touma -Maroun -Tannous -Hakimi -Baba -Toma -Botros -Sarraf -Koury -Sarraf -Nassar -Boutros -Guirguis -Qureshi -Aswad -Basara -Toma -Tuma -Mansour -Ba -Naifeh -Mikhail -Amari -Shamon -Malouf -Boutros -Hakimi -Srour -Morcos -Halabi -Bazzi -Abadi -Shamoun -Haddad -Baz -Baba -Hadad -Saliba -Haddad -Maalouf -Bitar -Shammas -Totah -Said -Najjar -Mikhail -Samaha -Boulos -Kalb -Shamon -Shamoun -Seif -Touma -Hajjar -Hadad -Atiyeh -Totah -Mansour -Nazari -Quraishi -Ba -Sarkis -Gerges -Shalhoub -Nazari -Issa -Salib -Shalhoub -Nassar -Guirguis -Daher -Hakimi -Attia -Cham -Isa -Hakimi -Amari -Boutros -Sarraf -Antoun -Botros -Haddad -Tahan -Bishara -Shalhoub -Safar -Haik -Tahan -Seif -Awad -Antoun -Atiyeh -Samaha -Assaf -Guirguis -Hadad -Sayegh -Khouri -Asghar -Tannous -Maalouf -Khouri -Hajjar -Abadi -Ghanem -Salib -Botros -Bitar -Bishara -Quraishi -Boutros -Aswad -Srour -Shamon -Abboud -Almasi -Baba -Tahan -Essa -Sabbag -Issa -Abadi -Abboud -Bazzi -Nader -Bahar -Ghannam -Asghar -Gaber -Sayegh -Guirguis -Srour -Asghar -Quraishi -Sayegh -Rahal -Tahan -Morcos -Cham -Kanaan -Nahas -Essa -Mifsud -Kouri -Isa -Saliba -Asfour -Guirguis -Isa -Bishara -Assaf -Naser -Moghadam -Kalb -Baba -Guirguis -Naifeh -Bitar -Samaha -Abboud -Hadad -Ghannam -Hanania -Shadid -Totah -Tahan -Toma -Maloof -Botros -Issa -Deeb -Nahas -Khoury -Sayegh -Harb -Said -Guirguis -Nader -Harb -Atiyeh -Zogby -Basara -Nassar -Kalb -Khoury -Mifsud -Wasem -Handal -Ganim -Harb -Ganim -Malouf -Sayegh -Khoury -Sabbag -Sabbag -Boulos -Malouf -Gaber -Shammas -Fakhoury -Halabi -Haddad -Asker -Morcos -Hanania -Amari -Kassab -Malouf -Khouri -Moghadam -Totah -Maloof -Atiyeh -Abadi -Baz -Khoury -Arian -Handal -Dagher -Awad -Atiyeh -Arian -Khoury -Amari -Attia -Ganim -Nader -Dagher -Sabbag -Halabi -Khouri -Khouri -Saliba -Mifsud -Koury -Awad -Bahar -Mustafa -Kassis -Gaber -Mifsud -Bishara -Asker -Nahas -Wasem -Sleiman -Bata -Daher -Antar -Isa -Ganim -Rahal -Toma -Rahal -Shamoun -Maloof -Hakimi -Safar -Gerges -Hanania -Koury -Assaf -Safar -Gerges -Ganim -Morcos -Awad -Arian -Tahan -Sleiman -Asker -Boulos -Koury -Mifsud -Sabbag -Dagher -Bazzi -Mustafa -Almasi -Handal -Isa -Guirguis -Sayegh -Ganim -Ghanem -Toma -Mustafa -Basara -Bitar -Samaha -Mifsud -Tahan -Issa -Salib -Khoury -Hadad -Haik -Gaber -Mansour -Hakimi -Ba -Mustafa -Gaber -Kattan -Koury -Awad -Maalouf -Masih -Harb -Atiyeh -Zogby -Nahas -Assaf -Morcos -Ganem -Ganem -Wasem -Fakhoury -Ghanem -Salib -Khouri -Maloof -Khouri -Shalhoub -Issa -Najjar -Kassis -Mustafa -Sayegh -Kassis -Hajjar -Nader -Sarkis -Tahan -Haddad -Antar -Sayegh -Zogby -Mifsud -Kassab -Hanania -Bishara -Shamoun -Abboud -Mustafa -Sleiman -Abadi -Sarraf -Zogby -Daher -Issa -Nazari -Shamon -Tuma -Asghar -Morcos -Mifsud -Cham -Sarraf -Antar -Ba -Aswad -Mikhail -Kouri -Mikhail -Awad -Halabi -Moghadam -Mikhail -Naifeh -Kattan -Shammas -Malouf -Najjar -Srour -Masih -Fakhoury -Khouri -Assaf -Mifsud -Malouf -Abboud -Shamoon -Mansour -Halabi -Ganem -Deeb -Wasem -Kalb -Safar -Tuma -Fakhoury -Toma -Guirguis -Kassab -Nader -Handal -Baba -Fakhoury -Haik -Guirguis -Seif -Almasi -Shamon -Ba -Salib -Zogby -Koury -Najjar -Atiyeh -Morcos -Antar -Awad -Hadad -Maroun -Touma -Almasi -Kassis -Arian -Malouf -Koury -Sarraf -Hadad -Bata -Tuma -Sarkis -Quraishi -Gaber -Abadi -Nader -Bazzi -Ghannam -Botros -Deeb -Awad -Kattan -Kanaan -Sarraf -Nahas -Assaf -Shadid -Gaber -Samaha -Harb -Samaha -Zogby -Atiyeh -Mustafa -Hanania -Isa -Almasi -Bitar -Fakhoury -Moghadam -Handal -Seif -Mustafa -Rahal -Antoun -Kassab -Bazzi -Hadad -Nader -Tuma -Basara -Totah -Nassar -Seif -Nassar -Daher -Daher -Maalouf -Rahal -Quraishi -Hadad -Bahar -Sabbag -Halabi -Tuma -Antoun -Boutros -Gerges -Bishara -Baba -Zogby -Nahas -Atiyeh -Rahal -Sabbagh -Bitar -Botros -Tuma -Ganim -Handal -Daher -Boutros -Khouri -Maroun -Mifsud -Arian -Safar -Koury -Deeb -Shamoun -Cham -Asghar -Morcos -Tahan -Salib -Aswad -Shadid -Saliba -Ganim -Haik -Kattan -Antoun -Hajjar -Toma -Toma -Antoun -Tahan -Haik -Kassis -Shamoun -Shammas -Kassis -Shadid -Samaha -Sarraf -Nader -Ganem -Zogby -Maloof -Kalb -Gerges -Seif -Nahas -Arian -Asfour -Hakimi -Ba -Handal -Abadi -Harb -Nader -Asghar -Sabbag -Touma -Amari -Kanaan -Hajjar -Said -Sarraf -Haddad -Mifsud -Shammas -Sleiman -Asfour -Deeb -Kattan -Naser -Said -Bishara -Harb -Morcos -Sayegh -Said -Naser -Aswad -Seif -Kouri -Dagher -Shamon -Hadad -Handal -Tuma -Shamon -Hakimi -Rahal -Hadad -Ghannam -Almasi -Daher -Handal -Malouf -Mansour -Sabbagh -Sabbag -Saliba -Haddad -Tahan -Khoury -Harb -Ganim -Mansour -Ganem -Handal -Handal -Antar -Asfour -Kouri -Cham -Masih -Saliba -Qureshi -Daher -Safar -Assaf -Harb -Abboud -Haik -Ghannam -Maalouf -Daher -Najjar -Mifsud -Daher -Amari -Saliba -Kanaan -Guirguis -Atiyeh -Sleiman -Mikhail -Arian -Wasem -Attia -Nassar -Cham -Koury -Baba -Guirguis -Morcos -Quraishi -Seif -Sarkis -Moghadam -Ba -Boutros -Nader -Gerges -Salib -Salib -Guirguis -Essa -Guirguis -Antoun -Kassis -Abboud -Najjar -Aswad -Srour -Mifsud -Ghanem -Bitar -Ghannam -Asghar -Deeb -Kalb -Nader -Srour -Attia -Shamon -Bata -Nahas -Gerges -Kanaan -Kassis -Sarkis -Maloof -Almasi -Nassar -Saliba -Arian -Ghanem -Awad -Naifeh -Boutros -Fakhoury -Sabbag -Antar -Tahan -Mustafa -Almasi -Shammas -Totah -Boutros -Cham -Shamon -Ganim -Ghanem -Assaf -Khoury -Naifeh -Bahar -Quraishi -Bishara -Cham -Asfour -Ghannam -Khoury -Sayegh -Hanania -Maroun -Kouri -Sarkis -Haik -Basara -Salib -Shammas -Fakhoury -Nahas -Ganim -Botros -Arian -Shalhoub -Hadad -Mustafa -Shalhoub -Kassab -Asker -Botros -Kanaan -Gaber -Bazzi -Sayegh -Nassar -Kassis -Fakhoury -Kassis -Amari -Sarraf -Mifsud -Salib -Samaha -Mustafa -Asfour -Najjar -Essa -Naifeh -Cham -Sarraf -Moghadam -Fakhoury -Assaf -Almasi -Asghar -Nader -Kalb -Shamoun -Gerges -Wasem -Morcos -Nader -Said -Safar -Quraishi -Samaha -Kassab -Deeb -Sarraf -Rahal -Naifeh -Ba -Nazari -Ganim -Arian -Asker -Touma -Kassab -Tahan -Mansour -Morcos -Shammas -Baba -Morcos -Isa -Moghadam -Ganem -Baz -Totah -Nader -Kouri -Guirguis -Koury -Zogby -Basara -Baz -Deeb -Mustafa -Shadid -Awad -Sarraf -Quraishi -Kanaan -Tahan -Ghannam -Shammas -Abboud -Najjar -Bishara -Tuma -Srour -Mifsud -Srour -Hajjar -Qureshi -Bitar -Hadad -Almasi -Wasem -Abadi -Maroun -Baz -Koury -Ganem -Awad -Maalouf -Mifsud -Haik -Sleiman -Arian -Seif -Mansour -Koury -Kattan -Koury -Aswad -Ba -Rahal -Zogby -Bahar -Fakhoury -Samaha -Sarraf -Mifsud -Antar -Moghadam -Botros -Srour -Sabbag -Sayegh -Rahal -Attia -Naifeh -Saliba -Mustafa -Amari -Issa -Masih -Khouri -Haddad -Kalb -Bazzi -Salib -Hanania -Shamoon -Tuma -Cham -Antoun -Wasem -Kouri -Ghanem -Wasem -Khoury -Assaf -Ganem -Seif -Nader -Essa -Shadid -Botros -Sleiman -Bishara -Basara -Maalouf -Issa -Nassar -Moghadam -Ganim -Kassis -Antoun -Said -Khouri -Salib -Baz -Sarkis -Tuma -Naifeh -Najjar -Asker -Khouri -Mustafa -Najjar -Sabbag -Malouf -Wasem -Maalouf -Gaber -Said -Zogby -Bahar -Hanania -Shalhoub -Abadi -Handal -Qureshi -Kanaan -Abboud -Mifsud -Touma -Ganim -Bishara -Bazzi -Gaber -Haik -Ghanem -Sarraf -Sarkis -Mustafa -Baz -Kanaan -Nazari -Bahar -Malouf -Quraishi -Kattan -Arian -Shadid -Tuma -Nader -Khoury -Safar -Wasem -Toma -Haddad -Quraishi -Nassar -Kanaan -Gaber -Haddad -Rahal -Koury -Harb -Mikhail -Dagher -Shadid -Boutros -Mikhail -Khouri -Nader -Issa -Harb -Dagher -Gerges -Morcos -Essa -Fakhoury -Tuma -Kattan -Totah -Qureshi -Nahas -Bitar -Tahan -Daher -Shammas -Kouri -Ganim -Daher -Awad -Malouf -Mustafa -Aswad diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Korean.txt b/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Korean.txt deleted file mode 100644 index 1dae5774..00000000 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Korean.txt +++ /dev/null @@ -1,94 +0,0 @@ -Ahn -Baik -Bang -Byon -Cha -Chang -Chi -Chin -Cho -Choe -Choi -Chong -Chou -Chu -Chun -Chung -Chweh -Gil -Gu -Gwang -Ha -Han -Ho -Hong -Hung -Hwang -Hyun -Jang -Jeon -Jeong -Jo -Jon -Jong -Jung -Kang -Kim -Ko -Koo -Ku -Kwak -Kwang -Lee -Li -Lim -Ma -Mo -Moon -Nam -Ngai -Noh -Oh -Pae -Pak -Park -Ra -Rhee -Rheem -Ri -Rim -Ron -Ryom -Ryoo -Ryu -San -Seo -Seok -Shim -Shin -Shon -Si -Sin -So -Son -Song -Sook -Suh -Suk -Sun -Sung -Tsai -Wang -Woo -Yang -Yeo -Yeon -Yi -Yim -Yoo -Yoon -You -Youj -Youn -Yu -Yun diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Polish.txt b/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Polish.txt deleted file mode 100644 index d2286c37..00000000 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Polish.txt +++ /dev/null @@ -1,139 +0,0 @@ -Adamczak -Adamczyk -Andrysiak -Auttenberg -Bartosz -Bernard -Bobienski -Bosko -Broż -Brzezicki -Budny -Bukoski -Bukowski -Chlebek -Chmiel -Czajka -Czajkowski -Dubanowski -Dubicki -Dunajski -Dziedzic -Fabian -Filipek -Filipowski -Gajos -Gniewek -Gomolka -Gomulka -Gorecki -Górka -Górski -Grzeskiewicz -Gwozdek -Jagoda -Janda -Janowski -Jaskolski -Jaskulski -Jedynak -Jelen -Jez -Jordan -Kaczka -Kaluza -Kamiński -Kasprzak -Kava -Kedzierski -Kijek -Klimek -Kosmatka -Kowalczyk -Kowalski -Koziol -Kozlow -Kozlowski -Krakowski -Król -Kumiega -Lawniczak -Lis -Majewski -Malinowski -Maly -Marek -Marszałek -Maslanka -Mencher -Miazga -Michel -Mikolajczak -Mozdzierz -Niemczyk -Niemec -Nosek -Nowak -Pakulski -Pasternack -Pasternak -Paszek -Piatek -Piontek -Pokorny -Poplawski -Róg -Rudaski -Rudawski -Rusnak -Rutkowski -Sadowski -Salomon -Serafin -Sienkiewicz -Sierzant -Sitko -Skala -Slaski -Ślązak -Ślusarczyk -Ślusarski -Smolák -Sniegowski -Sobol -Sokal -Sokolof -Sokoloff -Sokolofsky -Sokolowski -Sokolsky -Sówka -Stanek -Starek -Stawski -Stolarz -Szczepanski -Szewc -Szwarc -Szweda -Szwedko -Walentowicz -Warszawski -Wawrzaszek -Wiater -Winograd -Winogrodzki -Wojda -Wojewódka -Wojewódzki -Wronski -Wyrick -Wyrzyk -Zabek -Zawisza -Zdunowski -Zdunowski -Zielinski -Ziemniak -Zientek -Żuraw diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Portuguese.txt b/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Portuguese.txt deleted file mode 100644 index 58df0dc3..00000000 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Portuguese.txt +++ /dev/null @@ -1,74 +0,0 @@ -Abreu -Albuquerque -Almeida -Alves -Araújo -Araullo -Barros -Basurto -Belo -Cabral -Campos -Cardozo -Castro -Coelho -Costa -Crespo -Cruz -D'cruz -D'cruze -Delgado -De santigo -Duarte -Estéves -Fernandes -Ferreira -Ferreiro -Ferro -Fonseca -Franco -Freitas -Garcia -Gaspar -Gomes -Gouveia -Guerra -Henriques -Lobo -Machado -Madeira -Magalhães -Maria -Mata -Mateus -Matos -Medeiros -Melo -Mendes -Moreno -Nunes -Palmeiro -Paredes -Pereira -Pinheiro -Pinho -Ramires -Ribeiro -Rios -Rocha -Rodrigues -Romão -Rosario -Salazar -Santana -Santiago -Santos -Serafim -Silva -Silveira -Simões -Soares -Souza -Torres -Vargas -Ventura diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Scottish.txt b/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Scottish.txt deleted file mode 100644 index c69f51ee..00000000 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Scottish.txt +++ /dev/null @@ -1,100 +0,0 @@ -Smith -Brown -Wilson -Campbell -Stewart -Thomson -Robertson -Anderson -Macdonald -Scott -Reid -Murray -Taylor -Clark -Ross -Watson -Morrison -Paterson -Young -Mitchell -Walker -Fraser -Miller -Mcdonald -Gray -Henderson -Hamilton -Johnston -Duncan -Graham -Ferguson -Kerr -Davidson -Bell -Cameron -Kelly -Martin -Hunter -Allan -Mackenzie -Grant -Simpson -Mackay -Mclean -Macleod -Black -Russell -Marshall -Wallace -Gibson -Kennedy -Gordon -Burns -Sutherland -Stevenson -Munro -Milne -Watt -Murphy -Craig -Wood -Muir -Wright -Mckenzie -Ritchie -Johnstone -Sinclair -White -Mcmillan -Williamson -Dickson -Hughes -Cunningham -Mckay -Bruce -Millar -Crawford -Mcintosh -Douglas -Docherty -King -Jones -Boyle -Fleming -Mcgregor -Aitken -Christie -Shaw -Maclean -Jamieson -Mcintyre -Hay -Lindsay -Alexander -Ramsay -Mccallum -Whyte -Jackson -Mclaughlin -Hill diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Vietnamese.txt b/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Vietnamese.txt deleted file mode 100644 index ba98cdfb..00000000 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Data/names/Vietnamese.txt +++ /dev/null @@ -1,73 +0,0 @@ -Nguyen -Tron -Le -Pham -Huynh -Hoang -Phan -Vu -Vo -Dang -Bui -Do -Ho -Ngo -Duong -Ly -An -an -Bach -Banh -Cao -Chau -Chu -Chung -Chu -Diep -Doan -Dam -Dao -Dinh -Doan -Giang -Ha -Han -Kieu -Kim -La -Lac -Lam -Lieu -Luc -Luong -Luu -Ma -Mach -Mai -Nghiem -Phi -Pho -Phung -Quach -Quang -Quyen -Ta -Thach -Thai -Sai -Thi -Than -Thao -Thuy -Tieu -To -Ton -Tong -Trang -Trieu -Trinh -Truong -Van -Vinh -Vuong -Vuu diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Images/19/deep_rnn_loss.png b/B-教学案例与实践/B6-神经网络基本原理简明教程/Images/19/deep_rnn_loss.png index b694097c9f249773bedb361b9dd16d6e361a13b7..bdbdbc5dd2c5daad7c717305d06a4d7317bda042 100644 GIT binary patch literal 46080 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 literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Images/19/deeprnn_pm25_fitting_result_48_2.png b/B-教学案例与实践/B6-神经网络基本原理简明教程/Images/19/deeprnn_pm25_fitting_result_48_2.png new file mode 100644 index 0000000000000000000000000000000000000000..45399d86dec92e7a79384df32362c771d2986d42 GIT binary patch literal 33798 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 literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_1000_4_29_4_10_0.001/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_1000_4_29_4_10_0.001/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..e6e46b65dbe797c644ceb27b7eb1848c5240cb3f GIT binary patch literal 1352 zcmb`HZ%mU{6vp4SR;K%-9Wo>^ebL0%xxy$A5!3e`M8}xGXdHzgB6hY7MX0nzBLS9X z)m7)80j&}g(a;fv&VAW5WTp315jPlUbz5dOEL%o~pjbMMMz@8vYO+YOFJtHCjcQFu&rp?{G(p`|s;blk=jDm1Qa1TDDO<<>*P6SlHw7!51}I>1 z;ib)lzCI|1zOqelKcOD(jW^=*_%yUchC^qc44q%tAtfmsr2)zZ zn_-+2d-}wUe4EWr)cJ=o+;W&IboZ&x|0@yib7PCW6Z>P@NZ|t=j`7Fkr;H1s;_U3S zv9-sbV?B$Dw27EAxPtb&qj5b~jMT9dc9%J@_{Sx9&7X>+9R|vcRN_h7B-x)@g=Oh4 z!=0WQNEh`{r)v$2l)A`oXZB*Z=Xu)D`!!uz{yVSCve31g0_1XM9tM>6_|pkivU>8i zJL-ZEV>cw>&3RF9dEz8>k~hi4#S%{~rzGFBitz2`Cc4Xd6F#_|jS(lbFfp8sR|Nsk zMVfKPwMP7Y&nMLOXc5@E`pK2~E!{Z-f5M%C9=EOG9ISg-gV7qEd<%*6>X$4r6s) z~(TjRY###>m`p~VX@wMgV!03cW)ljf6F!4HOGbUZEwQmkg!)8m!j(pz2j)-5nK ze;rSjevUETFf49YqT~fDX6iqt;*}g`KRk##&iBLJbeTte*G_z1-u*yRh+${ngMj)u zI9=o*&qg?SeIf4&Mi=T(ga!XcgfsiJ?A#R-CSLMg8+fAC4V>AmMF%QV=CC}Uv`kN6l{4WRYb5jJ+psPTnVZ z{y0y5=cUtpd_##B6-L}qb*O1EL3rCw5H~H}QM~KWhE3_TT11o)cIInWB;pOSC&QMI}1DS5MV$GwKE1xK&%M7v@EAD`aFsw2Z7E|7!&_sth>&&pY_W z{7@*sW|;VGDQs+rrpEU-!JFt9GK)IV!1}LT&-y;WjgQUHcFF-~Zw5i<)3sE}?$_8y zw<7VCkK=)PTaMPGh;Z}f`|!Zh&jzikMb{S1ft-65cxSK+*Dwq4s8$A*o?tjY4ddRP zYH$t_DBtPAwo12L;@{5J+p^KPawo)h)pB)v^58Sqr`)`_)i7C5hi!}lSx1hb7J3Xk zl5Tu{MIz*ebwSmh<&dA+%Fg~?O-<+kKY>BM@J(?L#dS zF%S@z2`yE@+>m9G%T4zr zISI4Ef9Ojb|F{W7l4__Kov)awHE@R_1NrqQPQ%{KJ?LSG0S6Amqt>?fVX^ynw0#$$ z&=stL&g&8^k*HveV+j@U(OSMne;4L?4#4r2dsvrJ4el!7%gTR5^e;y!!|@Apa_-k$ zYIqY|a$8YPPAqU3(e9qnMzXi^`5Jh3#Q;-&1XQND|sLfLk+gC>MEBmgYbs{m&8!iUc zuODp;(n4oLCPY}vaqsP;)OV8)*^bK=zRMZ|n&j86^Ji#sGVnY<`yb zFxoGE1Si}{JR56*S0h}MeBuuAWR~ou-~48Hq|mU%6}|peO?Ajr}@qB%09xW7w&pr@ANldc)%wB literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_16_29_4_16_0.005/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_16_29_4_16_0.005/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..a3509cced6956bd4e3beed6cf321f5edaca16014 GIT binary patch literal 1448 zcmb`HYfRHu7{>olE+UC#a%VLwgIOFEgcJyup7*~Mo#C=oW@Q_02$Wk8gqE=}By=Du z0<{AfqFICq$^_X&aY5Sic2aI(z;t)nK$aC3W5#4d!3(ZclSPt!8GBFOoSf(6{cz6n z%Oj2ESUE9|%9AN;b9zl`$uQ=&Hi;ZcNk?A=Ybk>`_eaa4x1n)t~u@%(s(+PU!lnv{j zeH+SRcfg^>QSF576m(M=J*wJ(4cEzi28ICs(I|W(s}Vn zpFbAAYl90HzrhQGM)XzolZbjR2(IWt$~*^*->_~j?gtvek0)ZC5c3RO$c|M-WZ7;+ zb-g`p5Om|&`4L)J(TjgXhT{1#dziiQ2KdK~(+7U_#Nx~iqKQE`dT@*+c-*A=z(JDe zTMr4+Ehq~5h`c&ufIri{*mz|aEOJ)k)wf$A*1{`-+U0}xz_;{^TiK`>t|ogXnxN)| zDZGC#9DSJ>;5GSDb(a(Lxb5%ZWm-efd&CA8Zh-!^ zeo*^cZzFbz+Q3`k5BXj{6ACUc5r0!xe0e)8gz#``$P(^!%IUb9JFR&0p!lBiZZx*{ z&=XhOvESYqvQi51gRNyc_ILvHm1xjo#!9bp&_JC|0)bl`(fQg_dbMa23tV@Qsj_VR zs^h+HecKS(=XQVdDNxkNH8!Ag38a95oGpI9V&jkR>U){32ETOzLin*JN0y@dXuyoJ(v+VML0&qt d^eg`vaj|;*vC?R38?($Ytp?M+V7g$KzX25C`0oG! literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_16_29_4_16_0.005/result.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_16_29_4_16_0.005/result.npz new file mode 100644 index 0000000000000000000000000000000000000000..7d72d40fae50dabf00431dd2fc9a05fb2774bfa6 GIT binary patch literal 1448 zcmb`He^Aq99LK-g7!pEQFfD~K`O(B7ZAcWz_xVhYQVyK!2O(ZghKyr?j5gFd206$X5{H<15G%{NJ*#YA*z1=ist6GDxna>B+fHhz31# zxqcoWo*ro{*zXTS6s=9AAHQ%E=1z= zlwg=_sv~NN65>`AW5E~G$nlRNymLn`S!n3Pyj?M1HqK#j{bs0CJK(oFa>+Y;c~af* z9K%U=Bjuwf=zL~^eCs|;1`Pw~`6NCls*Pmt2|mAB%VQfpFhFjS{%N2Y1x&pF*zk{ZYh} z5x8NsSaJR?I2$TZC9f2Y-C;rR>miVJ?G%nRdcik$GEl1p#ZiGB=w?1asuVd|4o6_H zpoy$xCqTLTG1tSIX& j`FS7Y#UqQq^52n_HV;2m9>KM>${fo&Y1#j@Tu{_Mh8^^v literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_32_29_10_10_0.1/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_32_29_10_10_0.1/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..69739083c6154c0edd14f4930aaab9e53c6baac1 GIT binary patch literal 2624 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 npZ+_Fk0xhc8(}hKvNZ1~&vo7k5}ttp1O}c zNR^|{$B;RaXBp3bgC(vepXQj4(EIOZS?sAn-$Ocj2|2l7Zl6?n9FwxwdY%M z`JvIV2V(=Hc16bqhfMd~10&)>l>NA{zyl%5+T3ofC3np-ORkvvzlPS+3OlkQ)dT0% zp1?!w3)p8RMfJ@efNZxHRBlp{Uo%dJfFCcBmdCDSPRuiOs2YQ1D=kqGQH7D!{rFt} zA$_{fL~dnV4W%!7(LeDx{_(LCFBWljOXKAQbQhQzhuq~%ABM-E*J1CC2PJS8dBdh^)sMgK_wyc%3>ANs4K63bbk2Pe! zUW^mo|A3(-xmfO)P2J)pp!1|1k2h_EwZYw>XFrOO7Om8?!VsdpN~myeq2P*_CM57V zq-}jI<__pF2J<&V?;dX=T_J`T6-R-$ z*cN+#-huqUQp!GX?a${Qjxj=LhUc$1@;6_8AT043hOfUjgEvVcdg-PO>YEz~e|7zW z`aFmvYP?~ZmwOtk7k!L7qa;WtZ$R%4+i@aPMIK;UO1my*VAxnUUBCTLxOU(MW4N+i zAer6NqPjpqF5l${gBxp!>dWIG>u-dOR_1h_Oq2R*XhUcFAi2_0j+5IB$;s^vr0?@w zr>Ctwq$OwsWR59hKi^&+@-|RVyJZn+sk{owFGt{`Cr!j-kSm{*1i_xop46;DinnGL z;JlZggSPuTY}xgYcIDlGq?iu)>-qig=rBuow>g%6@~I(Yh6V^KyKiHtu^J37$fkVG z5TjvHOum@nV9g2@xo9E=N{{?N>;)9_^%W#8+!8Cp&%%K7P3lms5NJs5(e#3|5VyYo zlX#i}b<=$iFuR;s7aI{GfqJ zC!Y7qF-waj6#Tjq>QuFa?8!QKy*z{Vf3y$GBKn{yyd2*23-I8}S%PJ?G2q(%Db#FA zh53i_;gdxQ^k=1F^3m^bxhNei+WrFHR;q*Qu`=Y<4?!5D(}_VpYHs0xZx7mmL7pe< zK@PoTeF_RrNYUp%BqV(H(Fi%4#hT7(3EBGI60*jUYisj<5|YBRpjXTapeyV!zVTq8 zt>z{Y`alM|+*b>aaD?dWcM7*PmSMQDg0RzmBpEMa>D8kW>d>5wV-f>-&IUF3Y1AAB zJWU{RYB{F%wZh=>TEQyE4RE!Sp;xq$;q-^Iuu-#^+^+M(sqf=J9Lt7HbvdnCbSW%V z9mJBc1&|njl3sR@VPlE`)F*yNRCJ7lR*DP2PwR#1&yeo*ut+6Cej3#&%XBp{& zR{dN^=9Qv*9P`OU8*&9H2g&RZhlMr z3QN#=xrB)uh^AZob%YM*bY@VTx-B>Nn3CScUtIe2|ZHwjZJxrSaUfzv)X(U=04MCb5HM=7?8^zgx` zHK>Oy6-KfxV8cx%jY*wU81Dl6^zET@%Oz-uS&c!yXQ=J&4D5ORiY)AyLsoe$W(xBa z=(Q(~&XHaeI1Sd}XkIX_f&i4XWsuBAg}8F+ES0G1%Eige00}O@(tJ+Ozxo@ssar_u zN(?Z8!y{LH3K<^}TSbrc->v+e#lIu%H)Ed(nYp^ZLtK>qfqyUZOvubp_#MJi|7|dQ TL~6<>i>0bOCCa-?W4ihmx5P_Z literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_32_29_8_10_0.01/result.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_32_29_8_10_0.01/result.npz new file mode 100644 index 0000000000000000000000000000000000000000..02c2df4c722f8b00c8700e975b39342f4924e254 GIT binary patch literal 2168 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 SHTUFjB40mbNf>SLe}I4V%Wx8d^bLIiv>Esk^0 zyT1leMIoNns|2YcAF7Vq!f`NSC)MwOQqCU4v0hRnTEs8|LGaBt*?94)HcWiA6`fb_ zg8%H(f?x-0M)O_+wG3DYHS`pEHWw0a{Yg5aCx*)k!DLb_h5Wp9q0c}eCf3Yni%e>$ zk8KLei+@gZ4F-j4nzNy1JR0Si4$77u-40nPqo8?Lk!@1zfW~7EtmW+r8s4Q!?oCV* z6Ai?)4H|U(;WQeroU*Gan<60>Q)rL-8LHpAgk7(=iS_@o6U<|Gqc}7fVs%Tvrtb&{ z)*50r(?#R*VjrW1JYkp=gW-29OtWhac9L<#J3|7}~5?Rm(kD{rq`G?TgW6TE0j?m4QtFQXm z7SXm`K3Fi%VC{Jnw#9YP*1!v7iM0raR8%0s!IkRrI>Dv#2?@(wBjX2*L)`NQXlK`w zpKPS0c*p=AIV!QC=_8nCx&y}SpF*~8KL{=MljHIssJuQ2zF21pXDWgqktu_f6IHN? zR{%dOO_dpFwv*kqpVM2_DYWX;K~^xg0#vv~7|wf%Qq4*jU)Dm;d-RdQ{sItD4wJL& zBD_?0f%p|Apm*&AdNe%4<{lQEvP$4=^AW6dUWAS@0{TKnh(i5)2mLUY>;%>1PSMDE5x}~ z1#q~rk^a2VA3w@ELrmk`L2%z6?4M}U3#u)!#=Vg|Zm#KcbJQ>j-d2qm8)do`*oA!x*b<3BFP_;e+yV zC@fF6^WLS(j`3}2!sD$lw%Hk7^WLT6XOTNY$r{ zPjYExRxAB6+5oh6eoU^%Z=(V3-7s)%9V~AvCRxfCh^ti$x!Ko8w5lyh<0UbAzh}nW zoX5o{oe9J!dO5~^=g9u6jX*Hh1*cMbh(~8Fl&*RKfmY#=qL+ayw@B&dlfKa5V~)EG zwBgz2hX5s4NSHLJ-pgH1UW@bhR{q-JUz7HSvA+p1U_C4LuF-I~A2+R?y39(f|0vx<6Dfz*QZh*|DIQSRot#MH2YJ-YhssoUh4EUK7#N06)3Dl~#vS|C-4 z1wvY&D%2EdvI}+r-4@KTRg9;Yx=ba{*#lCR+^-j!FkKoQ@U*R9gk?6<|Wa2eyjMpSE^+XLV!#Qvxmj?+E z9hOP@8#uXtHGZgmA3Aqe5!(MA(>K)%ey2Bp=1vc}cfXpfI}lA&ImaPfav7fD_d}4_ z7mLToNSiK!iTxR6_Osp4>s2O;FZRL@eEONc6jc~}$ReBA_#U(3j1Bt(3UFbA2?x6T zh~&=i@YBcNqgEIMeXkvcr>7e6cB2Q*U#x}jaSN8~#xSK}26rSs5BibI(jVI10QnQh zbsGIYp;;8=ZZ~piOGZvCq$4AihFnnRr#KXCA@!BZpknA2V~i@p^v_MODQXKjNvJS4D7T=4F_jWAJXTgVY_qNgTf(Kw6)V>YE{CSv4=t zG1*P{URls8{1OaT4bW}m*vg};Vec!A*0M`nc=II{1axo4OZ!qFu+ISx^4@|Q4JCwM zX<)91lE5?OTYNIYyIJpc*<8`N+Z|#0{}JKRJ}tdGR=L*J7A;|NUbv2Y5-JsWEs*pJ z=b=#c5tzr?NsXc$GrpT9sWmf};6Vznzr6{MjBZ4h{UjcpNFnk>md7gU-&d3Coe!(R x#m(bIwb-&4tw#oms$gkd`|TlUi!FX1k8jbsIVE>2HGq*fjtE literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_4_10_0.001/result.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_4_10_0.001/result.npz new file mode 100644 index 0000000000000000000000000000000000000000..a14ec9d6d17840c81e5b58702e74f0855de7947d GIT binary patch literal 1352 zcmb`HZA{Zw6vqGM&7nl+z=5SoOTfC(jh7V`I(iRQTyW*3sWK)y7-B_1Ue-1&rePr) zGEuPLy0KQVSb@pFy}=k+`@aVx6*G($giYCS(aZ)`ac&qh#e}tLvPiNoW9R1N<~+&s z;Xe7@qmX<11Tl|F!1$eHH!8ds#?!uTG3&+B^1UBsWTh*%aF_~4C)}aZ6sUy~zA$O0 zSSaEPcb2KO>ip8YGW8CXM}IYck4ELzHM{c5RqlChT%w3Ceon-%_wc)n*ODJNm*MvF%W>_c7+NFCW%s=Q9_!39k)@4xsxMg%TYv4eRy7|+ z?QE+p?B^)h=In?1Lldm|mqVDzy6`h|6!0d_6P5Nl{MB^?FFv&$1Zyl9nVnAB9X@0h zjdbQ7&(>nTPaDLy$(f=egn?8n441L`m~1MDug0Ell(13obaL3L+r-}4M-FZ&#>?Gb zVM+TCii4M6>aq_=?HhWU5x|4H$}aq<0mm*)Q-7xh{Y!Lop!yhCkGF!Z z#YINyWMI(^0?$7fubFzu$C^ILJ$q{kW>{3sRgTfTVX;<8N1s(NNHZ z9qSY6sf4>QZu%ZIqHq|@`4|G6X1rzg!Wnx5ME_*N%Dq40X2VU)RIY~FvC*UpZEu0% z3FL;GW}EmNhVirqxz`troLIz|3gd|OxyRMtvRPD>2-VlW+@Lh08g>+x+ zN?39wfJB^FLj+ep0l%_FJga*FM_Mh=UiOFe&0#$#@07lhB>R)_LYq-|Vk-~ zkI-C;3DU!j#1fQ(g*`>M-hYagr0t>^n-i%0<^WYVyf9F%q%95Gh(gZs3S$0!HM!sU zu&UhLJYH1uE%VWOWMG&oj>f&;9)dRCGC#_HEWO^3gH_0V{XDX_`xxD~(Z@6W4Irq} AQ~&?~ literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_4_11_0.005/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_4_11_0.005/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..16711cd72bf5d780aa292023c36cd96df065f65b GIT binary patch literal 1368 zcmb`HZA{Zw6vqDrEt6#gfo(!HtMbyaB2ZRfApd(RggR1%DsPf0wnD`@Z4K23yA>ei~svL^d7c5Y5?&XYVJ z?vvj=3c33nKjv{QWrcy|G$=J;>zLnTbw4Imt;$NO(J z!GMpPt_!Tf+n)>q@6I(E(X*JAZCQzLU+Y6{ixM(d?58iKuO!QdPhyri8}I7-*^X02 z^UOvg2F6#=)eGMtytYM9@!JRNfreWkw_h|z92*Bd=T+(WR27|9as;RAi=e3UDT~}* z4O11(P|y_$?hj2kmQ+Xg=#4lQ^b7UjmO@He6E$7BYHk|Mg5g(|qK`->4VKo@-R)14 zo*XZWK4=@5tf$FPwFgQh(b!!$NSoCmTn; zUwfSdroW56u{VjOZk!!?E*RZQ)66wHE|Go1{+1-~pV@gIjj~@nEXVG1+u)GD9#Rgj zf|;ZRkjD##6U{bioVbjs_x9rT+(e{DJ!mr5&qCjjfaY=^W^DeN&bL?M#a$x2Wza)& z$F~WJpTddiPC2~rVYpQCM+`2T3c&S^he_oFu}h@4AM}VVjwqe&j5PcIh;(+JnD05E zJPJ$u>TqYQ3 zwu+<*ImgY9`S(@jc;}-kc5w7$ak*MtQG0A)m|~93vF{#%=W20{@^8y|_b0(Bp`jbrR4O=F*FeEC2iguc0x||G z1D#G0hn+f;fr_A=gu!HT&wJ|#Xkdzr4OB|l!02R=4{TPQe|D=TizNFp_MW^sd7tF@ zaGw0mt5yj`e$=xHrp|O;^i;c1l&i(On6fNyThadHlsD9A0;-TImSh>snI?&nmc(Z( zBr;l(oo{;2q|ejko3acpJyE~aY~XeC7X3B@KTGAyWwat(M(?2iYk4wr>M`4-gtnu1 zv29})oGq%w*d^pQ3x2nef)}PtfKH3a;ulgY`rJ`K!(gK4Skw#xr}#h~1sL<2#p3ix75_^Vt4V z8D95m0}7U>VR?=j-yG56(!N8eGvqY7Gn9upbt`GGtc8tK6HdGD4};-4*wFYhs!WUn z^$W;Vtn#}UC7>u*yO7h)8aaiGj*gxkawC(45d7gF7`|-ARXG+^9MnV1feVm_%?pc8 z=^?4U9ZF+W&@4TObmFf`+xIFizUmxw$!QXOIgxl=I>xqitzlwTXkkrp5aUyo4}$CY z_;9X2L}x3I!|KKr$RfGg?yE2y_BwZ4xPWzZk3y3LGpTodncMy)X#Jaq5;TKCe8PT! z810#;THZ(O)_%ghEn>22D#*7X?Wk?i3wr+WK`%yH-ruO<_$XcNigeTe5$WtcG3_aB zjlf?tcMykdHygWE%ynk0jt}z5z~d9G?B~{8Of76Bb><#2T^Waq_N~CZ_YR|W!F&ky zj>K6%u4dFKftw%o@2iS`=hG_VIeNahW?E*V_RK(0Wdbw5@1BA;(=s#4e=Oa?=fSE~ QVt1D;I{kf;Up z7mr*ZCmm4H)J1G3zk+Twh%R%jaeAtOe(vFeZgC9sy^=#UO)9FjDmK!{M#jw6oen64SFoV*ODpiM@Z5T(n=t}@ zuD^p{_H4u4J=;-p{x*Go?hN8s0!STQVcF6gZs%Nrear|Eu2w=_6$3jPX0bokP2!%m z7qjxV;ZCPu${XY8!-kwe*{H(LR&U|ak}NnCrWJSZYbW1Hv?RUQ0_)q{Q0aRC;+)DT zOa3;hqF#fobRIa1^CG^m7{|6Qi51;%iig_2h2X0dBq>Ht?@ifiSDtsIyMuHjYd?$Z zDcOzA)5qaP3L7JvMzH?bQYS{&4LaTz8rz zwefA_xybYMDf>i1D%Z(CrJAHQc#B!doj9dzgi}Y%bZM@rYu1+ItD+7N43G{|knx!}#1l&$cxH%$(T)u9pIap3{;9P3{sFv_`4;|>7>*tlYuGb7 z0ms-`C{r#Cv-{fc&pR4SUdRK7MiCy+Op??98%ZxS2o8ClkQVPny0T@BJRVWDircC; zMq_GIL<#>#M4MX*T$?Y7;;_cf3N&~7MUqd0Au&gYE(S3w{7S*o>nvd`PYb*EngJ>3 z!UcC*{i1aRZH#_KpWAj6-Ypk`G=gR3!u2rP{RL>#|10cnS(hF*mH zNLK6!mQuhD1{{F`@_jzjMvB5gXhJC$$DwB$u*_v7Wt)1}$zA_spXWaJ-1C0!^T+eN zU-yk z34|$`id~AtjIEi9q-3ieo+wu)TXbb=Vpg){?ClpM5(M~&1OloWDj)%smL85j|!oItdY*cw- z{H<*mp(>~D#z7p<*TX%%GjX|SCWe;NB&|-2-Q|MNGJkGpQCl{-k}s!2O)ezcj=diVzMT00LRLjQU8ntp51-{ zNZn3!@`(d+(s`)*B^HdA-$XlZ10DU#6?CF?AH8SNc=Q1%FN1x+s` zyw716Yg>_veQe|cM1qy89uK)C!|&1bG&u~{Ylyj@p&Yr1oS4=CBXu+kt&f8hsd`-K z?r!*6t7C)z60lKCHJEd9lH6I^faBxQJ*Hq0hK-!XO1}!I+`a)m88}VNZb48S6pmbe zAfDW*fU_HCN!O%5Hsl0DL;nHt-Dj~lQ#uUi`qpFmz9`~duEi()eL*Dagy|a^Qd1HN zA7Af>R9z}NsXK+XW)lv@)UvId2~w-OP2Adb?7GfXu=j}@^yx3{@Ot_O5KSu3D?AB< z7BL1kv_Ap1~^zzlVl`1eoK;fd9;D$Sfpq*SG;AKQ9DLZ8v$;qO66zjRuP~ z*0x#{_kURQc%dNR4-G#D?e>Sky=RVuy*a`Yi9fUsf(32I2gX`RG0vu%fKA&xeq^9Cgs^#Wn0VASoT@V1;hLe75f7E literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_8_10_0.001/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_8_10_0.001/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..b2b9bff1d30a734479907c3694d6532f6b4841eb GIT binary patch literal 2168 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 VfwR)wlf_b)JLl%^8w=;FUjdc0SGoWI literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_8_10_0.01/result.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/CharName_100_4_29_8_10_0.01/result.npz new file mode 100644 index 0000000000000000000000000000000000000000..d04e999919d430fc9b1ded4f7f8c636576315030 GIT binary patch literal 2168 zcmb_eX;73`7Hy=V0U;P{U<|0O?AWqIz!v%5{XmQvHjz~vk$^UcB5O1ljG?tf5CtRJ zkQhM)L5VO#Kp^tH+b&43!ngo#m_z|>L{yBjNQoI3QehSrR-Iqx-gBP6 zw>n?QdlR#GQEFSXM0_4^A~nXF!FKV9oAdmFef`7Kc$;`>R%@gwtCOueetHktBR`;#s-Ij57%4(#NzhFxJ&ZW+d2T|nEFHSo}^8;vSIhOLPwm>R3? z&^9!Q#H&vsF2!NY2GDIoQ|T zO&ofAi1TPTygKWM?rHV3`FajhV!RF>v|M#_x@W8mO&Ea}Q}o#7iTiMV>n>t3_Zo2u zs)l=!+raCT5BBQGX!_}WU=(VKRsuh6d#MZU=ZBNeEVJm7A7i0yun7vZ_rPIE0aGey zg(SD>u==BPEPGSz z%KW8}Y&)O&4=7ORqs>|9zx%4UmjgNHS)_b-A%K{1rRCx@f7 z9Uc!1LiUlK#t&A$AU6aEi--YuO;h6eFMPlup&T1-Wa7RL)9DKNW?G>sVN2RRfa1FQ z)H`W}>NRB1Bh7vgU#h|j(k!^?n~UK(br|$dZSKOqBI%N*GvwR5*XR`ETi`B^flG6B z@S^QCYPh8XHzxNnCkMZ#yZ^Qb#)9Oad!Q2hc1R$pmSC#(@AOj0QAlQ;(XhuJj=8_W zfCHAaK}2xgSr59Zl~S*v24?5Wm-xL_4k|Q;+)C_2x$>L8pq<_OINk9Z+^TH^&Aq?E ztJTKf?W)E2|3yM9V&6AZs_}ReIUyk-?<^q_vB=Tk-6SNva5~e3lcDRD2_YW&B>MZq zv{!N)&c@5AeT65Bs)E3wR5Q|WwI1*ws?U>lYU zVP1X2K`zI~=C&-RO;O&S{eZ;P97AP+76b2e`bS40ZDA1+H`jxwh>?$n-{18y2!m}naS z&4Q&6ygmVrZ(j?4r8uRfBPxBI-ie%`IQ0KP@w=IXNay8HHUzeJ!lC{m${JdLZJUr) zoRy*5Z|V@y9nJ*nIl-wTjnqaW!_mtE7?s9BxK}ZGz&C@0*LLi&dq#~(HojQjc%N|V z>uB1GE2Km7AlH#<51~iCYx>~BNfUfn+-i^l&0|5@a>A#abupAbvUKL*3! TTVwpm$fd!Ot}IRQ*JExe~rZ^GCB3V_$eF; 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 ah=JnogCTTMn0|6Na?|JJ^xdX3Q~d@*WNQKd literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level3_Fitting_100_64_48_6_4_1_0.1/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level3_Fitting_100_64_48_6_4_1_0.1/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..41b3fd8749e1141933d4a16790a12e699f404668 GIT binary patch literal 1292 zcmWIWW@Zs#fB;1XU-pfi4}csHW(DFNaU6 z>N*PQY57GZMTvRw`9&$IAaS?EoZ?iVcyUHzK`M~1VWy*CqN$@$t3Wp3TB;edKVeqE zKJ`f-_9dQe*cYw-WnV<|DO*j>hkNgJ>FqbVH+R2>$ew)+f%f}P$ZPCZmn^jpe86NU za52G7^@8HQ?%=idi92id?bvzPHuU3;eI6C7_eZH}**|!ZwQn!mRQmvwAUMTS#xeou zbr1#xK^VnBV4|a7NMR6s>vq_m*jH~q$;fnn_vQZms7}7Ra*fgfpi@B@cw%7UF_Mb9ous?IuXn%9=0=qqT!|e5b2|KvVT)N-x#%;Sj zzpU*W?=H2Mwz+G!h~t_asuwSoGbX@dg$?M%q*99gXh?a=47$2#UoUt0zBe43Z0{U- zwhz_KcJGbjT7Yf^VX&LasNrTxlTzRtw!Hz~j7%a7xU)Ub!C=t92%^A+0J;|RYy#21 zz|g?R4Acb9H0WB;lPN;WHlP-8qD9w&9_6%-@D Q+``Jh2(r*7QJOFY)m=%aa_3{cTC;Nr^21GJ4lrdDRr=%7q7pYq*sN1BO zsOu=Gr{x!w6eZ@x=NF}8(>1*t&3hMA6niKdQ1tpeGA>zT0K{-uG| z`_C=@yl>9z^VWaUp6n~@Y`2?QnXvCp2H*a$kmdUWdim_uXov0JIKy;5bKPS59Np8l zmwe;wCcg}^6YXSnNOwQES9!95-J5mqZSNjgzQ3n%lKsV2kA44Rr`QLe1VP`Pl2sFc zUI$@N5QI@21SUEPh7<epDwPn%$ay0O(W@201yL8cwD( z)@B!{?7!L9Zr|>+(*EPN`*yMmg7%-?(QaQ*WW4{3OSc_kD8v53`{EAPQzz^%7FuWf z*X^;LMA>Y6mYP1V;}Nbfbt*= zc5@ju+)Qaw0y#Lqn~_O`0e7|ssR4loMi2=u1kkmhXA_V@5NKdz25JIl8gwn_$rPdi zq-7gW3pmlDYeA28gqE31utb2a2R+ykdVHCIdccto;LQq(5nyg%Wncta{uL<0zyJU{ C_9p=V literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level3_Fitting_200_64_48_6_4_1_0.1/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level3_Fitting_200_64_48_6_4_1_0.1/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..5bd7c808c1ab85db913bc61c138415b92f2a152f GIT binary patch literal 1292 zcmWIWW@Zs#fB;2?)mz^FdI02rFe?y;>g5$wPWB7+4Txl9C}XHrPf0CKE>gErP`61l zQP)vWPs=YVDN4+X&o4?z1&O;Q<`ky_#fvi%3sQl64Kp1D6HOh3S_QHJ*XxBsb`#pC z?l($g-9IPG%Rz9p+5Rv2o9(N=m)cJhE!Yz-+O+=^SML6VQO>qd!U2Cpn(xYfeQh2E$G<- zfsq-g37l!rwV)?cgqCeUE#O3pt_3~X5n5(4!4d(w9`s;G=<#I+>H$YWfHx~BMu546 Om4Ojx`B$I}0|Nkol`w7q literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level3_Fitting_200_64_48_6_4_1_0.1/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level3_Fitting_200_64_48_6_4_1_0.1/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..270dd994536a9bc55a49f303c04618f109e96213 GIT binary patch literal 1292 zcmWIWW@Zs#fB;1X!9Bin9soHY%nHPzdU*wvll?+{10oq2${4EEQ&NkQi`1(SImM|!@#2icf>a=1!%RoPL{mqhR)K85wWq;gZ%az= z{#pg*{an8n*z3d_?Dr2kX5U!bWzX+Q1m()Ryee17kgCtK~R z`{L~P&!4)V*M)n(>F+rE;J4@Z?-LKSSE^{+UokD%K2qTLekD7$0|6*Oa6Rf+?F69L zK^PPSVH5{}iH?FHg+Y+hde|ml3j6-JUmxtk%ih?bI=SLlf&T%ZQ$ZNyp_CMVH!oDT$js5=>)9k17YVMO1 zWOU$4ueaNk(rMpy^#ht0jXQG#V6nmm^kPye#eOuTJY@nMf&x&ZrR&&-ycVE52!q{R zMh!Ppnv_5e4)A7V5@Eod?Llflpn(xYf(rq3E$G<oc7z^ZW}qH$Bm{V~f?@=iTUZ$wftG&-$}lhh0Q>+U AH2?qr literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level3_Fitting_200_64_48_6_4_1_0.1/last.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level3_Fitting_200_64_48_6_4_1_0.1/last.npz new file mode 100644 index 0000000000000000000000000000000000000000..5bd7c808c1ab85db913bc61c138415b92f2a152f GIT binary patch literal 1292 zcmWIWW@Zs#fB;2?)mz^FdI02rFe?y;>g5$wPWB7+4Txl9C}XHrPf0CKE>gErP`61l zQP)vWPs=YVDN4+X&o4?z1&O;Q<`ky_#fvi%3sQl64Kp1D6HOh3S_QHJ*XxBsb`#pC z?l($g-9IPG%Rz9p+5Rv2o9(N=m)cJhE!Yz-+O+=^SML6VQO>qd!U2Cpn(xYfeQh2E$G<- zfsq-g37l!rwV)?cgqCeUE#O3pt_3~X5n5(4!4d(w9`s;G=<#I+>H$YWfHx~BMu546 Om4Ojx`B$I}0|Nkol`w7q literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level4_Base_PM25_Fitting.py b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level4_Base_PM25_Fitting.py index aa2f34ee..fa83120e 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level4_Base_PM25_Fitting.py +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level4_Base_PM25_Fitting.py @@ -50,10 +50,10 @@ def set_predicated_value(X, A, num_step, predicated_step): if __name__=='__main__': net_type = NetType.Fitting output_type = OutputType.LastStep - num_step = 72 + num_step = 48 # 72 dataReader = load_data(net_type, num_step) eta = 0.1 #0.1 - max_epoch = 100 # 100 + max_epoch = 200 # 100 batch_size = 64 #64 num_input = dataReader.num_feature num_hidden = 4 # 4 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_16_29_4_8_16_0.01/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_16_29_4_8_16_0.01/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..4aa5ebe31d4c2ed6fb4956b919f22c2e61d1e0d5 GIT binary patch literal 2520 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 NsmbsZBEwc*e*-p{U+Vw> literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_4_10_0.1/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_4_10_0.1/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..9b8aa0f3e8c53bfadfd4cf744a6af3ae6008298f GIT binary patch literal 1912 zcmd5-YfO`86#fbnw-N{?Y{Gz1oJoNILdTq9`<}WmWJ9n>6q&a%uA|&WndlG)QA7hM zKZ_t?t*HtgP90iP=~fj8j|krP|!!Oe24 zvks#h)&4kHmWG_QhPYLDnLG?V4(_98*;a=jh*f4`@BM1H^;k(C=gZOVkp+zZWrY@J zZ&J3d3P$3ipv1nJ#=g>oQcXPe6bz$Kd>xN$kmFFtZE^i$3u*j#KE&+y#0$Q~C)TDAtxuja&z>a=BLsnMFNMBh!?2UY@el~Y>DOE zoV^DH9EQr5E7sV-Pv+sMX}L zb`F~JLm+zUGHn^$!`_!<0B`Cmn%i}oo!e=H$$lr{#+eG-c%DzyCLxllRd>bJ9V#$( z=O7Sfis0u-R>}~j=w2|fI7NYRC8E_7W16SAml1wipPEJ3eOC{Q7`Fx<0r-QK; z!5%MzMoC}`F-tU|p9cX+e$JO2U@J^efs;(^$ z?Xp(FK(#;iX)N{DC^=y;r_-myf=1EHps{x#45B>cfNKv?o?oWKF1(yh(h@qgE>vRF zpHKUff{7&h9P!_uO}zZWRK9iRuxZx>5sn-L)utID^Wzv;GXH*Jv|<-3U7P`r8^pD~6Ir=MGHu{3`Z+6bm8?k-F9bh literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_4_10_0.1/last.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_4_10_0.1/last.npz new file mode 100644 index 0000000000000000000000000000000000000000..203568dbc05b684aaa6b8c241af907101a617350 GIT binary patch literal 1912 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 G)Y(4`I<=Mn literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_6_10_0.05/last.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_6_10_0.05/last.npz new file mode 100644 index 0000000000000000000000000000000000000000..fc2018c73d0adeb6e955092810b20c81b70b2026 GIT binary patch literal 2104 zcmb_dX-t$?6#al<8x)0NgrM*t!k|uM9T4?a#(yOhQ({un;^Ou7kl3X3c)p&V7%PwG{~kVpV%Be*nBB;J>J!eBXKF061Ie)#W9@mx zE@0Sps+IhRikKSG(=!Lk*{x8vU8gY{C5Ibh--0l!1fNX{A}=Cuf}=|>UHh~cehw?= zHr~x^W^|>nrrsDPS|6jEg~5<7`I}g}hk?lnZ)wY+Go+wO1>@>!QQ~lv`>c;rVR$VR zWgdppuo*hPsnIxE^y12Gm3U@m9q~2k1J}kne0T8(PPfRyR(g$^t+bW~Y`4J8TW(;P zq7TZ(9EH$1I{eEco;Kx{fUd2AE|1uc7v0>!l1zrm(o3*Mxqw6qoPcZ0#5Jq}TV~{- zXG%AjVq*hdb1Oi(;sN!X;DHb4=Yp#I9KOy~)2=BSxZhtYp ze^k(Psscs2V)D$H1z#f_6{fTuHdmG&J^nS} z1QISOY6-@>x=E{Qv+>uGJLns}s&@xen!PVuCUL@a5C#oMB23`wNi zh+*{5TP||Ymh%_0-d=;VoTz3roLx0kYw3TFbmS&bW7rCN+*aVy4lA@Nd`hvp0g^7f z!|KprT3xyWwco$dyu3ODincnDu5tx%_n&a0-b1uQB7xo!DvVfd2Tkqg&?}}uGlsSi zpXZ^V2oJ?gY(6%aI8(Q*dMb`#v^PO0z3p58z5$o%2>bigHC=_fgL}xjt^&yN)@eMV zWzvjQ3*gbo9rSX7H$=(3pu5@~Miwa{WQ4i4Oq>m~uB-8j;;CSMOM{mzl5p;o8eD#5 zH8zAeU})fUjGokp*OIew*idU}WwVv^VCpM6P?F=(8JfGi6nf|-nLTJp{KTyPpcG++ zN@YH_s;5EKtqut4+DV27Jg0Z|?Sr`5Rbbw-4*PP~!KRTaNGT~Li<-jljps=&NS6yQ zs)oQ6W+k5RJO_e17qNJ*3?KK!a*JAf$!Yak!fY8P-PP)Z14r<{tuax{x2}g7kNMvJ z#|#Fy2wCBk19CcH@nbI3*_GskufUww6~sC6EUoWOBx6U(sgHv%DC-i@GQg7i;jS~3 zp0DJrBJyzAep}8K>bQYD=FJv159d>-M}Ln#gYJ=!-e7fBsrPb^GP{X?aXy#qMo72A z1rih)LE|_jdHr%c-J5*2x$8+g`BPp<4rl^te(4Kx#J&g@TANV6e4qy>g=wzZ{-*Pb6=S{-@xl_~Bq0QVdtzdji8KjMDi#+rRJ(DTWdJ yNHG(92&5s!(6S#XmVAic8`zLzXn~KMr+QAmA!K2udUx=fz?3oKn{+YP|NaG^8md+R literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_6_10_0.1/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_6_10_0.1/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..b68e480c990b484bdf01b391044a70961cae5518 GIT binary patch literal 2104 zcmb_dX;70_6#arEjNpRGGL;fTQDaK9!Ga5#ccasBAt{1ZK^=v#TB;Zm1kn+Zq*Z~I z#e&uaAtJWWsz^iy^6rO}77)=YB3hxi0M=65vDQIFX@br;W~P6d-kI~`-I?>_zH`pK zf$|}?PRz^lU;?f$jSIA47&Ex0=F%x~s-)ckOFs-;&S4UmEyBnsO@vzLClJn#_7RE& z!szwtc(pPvbiFz<%G{r)T&syP^)+jhswmTY($tw^fsaTm*edw1W$!-Si4ASjgLt3^ zc4Ip&7K#uy2#C(Fo80r@8S#^JOe@`ol6YIto_=hsQF!6ToIBE%O^M`LZxZl3^UzUz zo%GC4gOCeJ*mS#w>N*6Z&G{J|QD+mcY)_-QJ!D~6lGTdsRNSca^i|c9G zxI*a;QUo!D8>Jf-WDW0BTsRPxJgT9YbzpQ+*lDN9cVPh=qUccFEPHazeo?a*g@QZ7W8zsV+}Lw zV1+NA-F7Y%E3fK}n}bHc!lBV1T+u?r>c4;sHK1+HrkX9^pi*@k+~>NoOa!0hEY84C zr4b5}7(B&41_OIf;-d#E@#;_GL7!Vh&vM%7gR?rwYHz~Q{?7<+^d9uC7{MMp--BJP z_OLU#4&E7`Pp&_(kwuhE#}fZ3@M)qa9e3B0T>2meQ!h*4&l^M79o}_PetIbezF|4> zi!p~(9ELH&Y`JAtTW*?I;4QJva$jF_X7f8HLcZRau2ku;tS(uaoSO^JorL%$-Y3c1 z=3tqN7UVZY>;#aZYyU%OfaF_fz1>KPX%P`g^1eVJ}q5vD&Vl3cKCd-okKD2!^w#B7Vj*-*edPuzu>H z&!s%Bo~l!J!`uW8*;T6}vuvJW^v(&`&0h(^ioFoF*w)fnejRMJ~t zHIu&T0qKpFApC7r76c$;A+x-p;<%$Jb!H6CIMwPIP0_Pf=kc!TB&|ULc~dIs(C6=x zSg$^!y0Xy7-F}yh+9ig^wmMLh>@=zj^)zgNCH}u0CEc0s5UYPwJ(dk8GhT2pzM+ub zwB18zY5VD@3wfkU;YNgSA0$zo9aNh677QE>!MdJxWL=~?c0W;)tfxn4cb_e&yu)G3 zrWxd7kOS*=A`^I#Ye=A+W8=j9`-wD}W3W<8zxe84T2d@m+)Dz(q;NE*J3F}WEGd=| zd`;omz6zuz#nQ5`DML*meraG!j->@&bAC5-1`QD?=bGJN+5}vNV;a)K&iwiZ9OArR literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_6_10_0.1/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_32_29_4_6_10_0.1/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..9cd484e6a2cf86889d9102af51ed252a57c15475 GIT binary patch literal 2104 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 YXAZ#NKm#3(+R0?V($f~%Wu!a(2hhNObpQYW literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_4_29_4_8_16_0.01/last.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_4_29_4_8_16_0.01/last.npz new file mode 100644 index 0000000000000000000000000000000000000000..5a2f11623ceec79524e3d4a6cf2d8034f12770f3 GIT binary patch literal 2520 zcmb`Jdr;F?7RSRIL9iC86cNK)BqF8q(){j;mP&<%Mvx%3LaoFWTpk8!K}68FiXeiz zysM(92$5E{F9OLup&$1{w4V^FYrq&Z7YPG z33H%Qco{3YGcogUBGc<`Oc%wEK)@3pD2kJU=;={veE0-J+xFtyZR6Uo@+aa!@Y;VZ#KsD7R8vA=8HbwPQ2!4HKevP7)PUihTBed zr12+X7|^vsLH-DaCRNf=%?b#}(NUPJ$^mio1U*A9(oa*xq$5ca+9w*A+YhABk(CFA z7s?s=fl7G)bPoDH9;bP}HFQ+^tGu7v2p;SMnA5rjLT*)(Q+KUl;9wcmPuAnDa7!m2 z8JCcwjq~YPK?ZTXe~`2fh^gq26K0K@;zt={7+O1Cx8E!)68_UIV3*{n zC~v5O)TVTz@tQqv^8q2WkYbwH5QyV?aS)Mjgd5V$p?O;`JzIAZT4cwVGII%ewAmgz zHd}+yQ5%e2*ha5&_u%-U%jg(33aQjhCKj8~^4JPS(!C6KT2pBCc}96{fe;^4ht4Gz z@Q2bs^dHezXzZ}#k>ODcTJbwHEguF;7aO?WR>4GuRD;XVCs<%}9HyWA3D)ZUl?o2> zm~@wY_V(8nZYRGbRiK>eF%M-9O`pzoSHtchfIqil(Mhl!rWr=nsXU3ve!k< z_`C3NkqqxobkkhkHyHM10SQU^L$)SzO#bb60=n|P1D-%+<$+&3kKK$+%4=l?oCZ(biT-%y_EKJ@< zd`)d2#i|Js0>yNAX${w*p$Ka<+sVmY=1eOMXW~*UQIJfjPr?9o6}HikKUU$?*ZK6l z>|%O`Zvp5sN*GNL5We#*2;Mu68#Tt_}mwpk|sl z6o<#6CdoawYjyoLPbeq$JXz~eO8Rrnd9J^3VU5iq7`hV5lbz1S--q@<@b}r65#2+j zf*;Yust1@deOes;9o!jhQftxbso!iA%GRi)t5nEa|BoKcZgH>;!d(1F&l|^O_xryg zgPX1r-AAFYcfm$-v!R#xxSH`6TylrM+}gp7yS%A(eNPwOHFLm^>&E0u1$-j)E~2ku zP`y~cI$eo?N;5UO&bmhBsG2PY9(RzrINeI0HeN%?;$ggVO2Pa~asnzix{9>Q_0-cS zlPsCc0j(Y{5-Bo7i``th%P@%4*8hz@^&XasOocQz#~hpDH_GM55#MN+AT=x_))O8u zx2jd9QQs}6g83K{dx3fP^m6n%vs50+Eua#&R_2uVJP>~UJvldc5{~B1Ba=)d4oQol z{iGLfdi7WITy`>42QplCBz`OlbAJ(s5y+zJs3qM zC;U-6&llz;O6BeLY35+nS}m0P_8GR5U6llMYKmS!BJw>hy0dD30U+ literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_2_1_0.1/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_2_1_0.1/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..6f5ce3944e85844f922f9a7bf4af18c4ab45c9d6 GIT binary patch literal 1312 zcmWIWW@Zs#fB;2?*q(SImM|!@#2icf>a=1!%RoPL{mqhR)K85rN+o~;8bD0 zedCfP`&66z_E)Lt+U}Xsux`5 z{@Ca7Fns^DTgLX&4mR1JUHoC+HMWiR7cMTe>+{dFQ(NF@tNZ5i{ literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_2_1_0.1/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_2_1_0.1/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..5894b52419c9073be51e3d474c8f50b81a0b276f GIT binary patch literal 1412 zcmWIWW@Zs#fB;2?>&iN1;}M zY`_)cyKaB?-v)b)oBjJVW*6^w|1f*6!TD$VmRU6I_u22Z|El7~y%rxm?1be~4;*d0 zW0w|`WMA)ba=)2G=l0%B)`dALE*wJJyd}QZ7j>J9tt<9I) z1)v1W#KU|3b^v`3!k}OYg9Qsn00dw(MZsdEqhLs3u(<26?`IL~vPE@%hVLS|1wdDV zFv$6VFz15=KwtrwWMH7k`6fCFMie?fKfTNT+}?L~qKY5vR&1HQKXKK`U4Qf6*l#<; zZEw0|(LPjf)!AD%9ss%=gxP@J3O9uL3nT&p2f!rd{-QLs%9b(j<$tNZ|AzGkJ6G*4 zdl&Zp{f#2w_7#T7_E)2u>`IJx+bK@^wBK`z$A0-`hWoDbs@X68F?oMeBG>+TT>kq} z{e8Ha>Bt12&p;ULZzGt$K_VakqbZ6{U~;51KKHx~vfsNeVt-zNfW7ZqBl`evMkWzp zOhEv8aRU_wQVonCHn{LX*MgcAk+p~eHGwlGx)#*rkF4byPzyLSpld-*TF6?~GBH3C i8oD0TXhGJqlo_Z897zG*tZX0|Rv=^qTAs@S;sF3~DLsJz literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_2_1_0.1/last.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_2_1_0.1/last.npz new file mode 100644 index 0000000000000000000000000000000000000000..6f5ce3944e85844f922f9a7bf4af18c4ab45c9d6 GIT binary patch literal 1312 zcmWIWW@Zs#fB;2?*q(SImM|!@#2icf>a=1!%RoPL{mqhR)K85rN+o~;8bD0 zedCfP`&66z_E)Lt+U}Xsux`5 z{@Ca7Fns^DTgLX&4mR1JUHoC+HMWiR7cMTe>+{dFQ(NF@tNZ5i{ literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_6_1_0.1/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_6_1_0.1/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..265f1024b991280ab0eeebbd438274389a2a21d9 GIT binary patch literal 1620 zcmWIWW@Zs#fB;1Xvjrig4}csHW@Qjz2-V9gsAOai01E)c;Phm_P~U(^MuswmYW0-V z;^ZQAD+P6%G!u0l1@*N2qLQM-y!ia0lvI$oTVhUeDp0&QBe5VA$k#B_Q83ZeQK(fQ z8*sgP?QIvG!M#89xw73|k$`==H)ia6fA;@=O>@HoKb*z(Pu|C2w}z|PZjo>Qex0_B z`%(m14m@1`(RPco_Wp}UO6}YD`s~k5?X$C&?z2ztH?W_|`gp%<9>2Y)%*TDIrrY)f zpae_D#J3eQfW8M|P_Tr-f(0Z10x+7=U@@dHSPZLo+Z{4cvU?+FZO`@brJbiev%R-L z{(e;N#2pe|{{ZM}5C(ZC5au0_00=w)lMDhet)3*iv8zWTkTp-PT$`rHpPy8?`^xU3H|%+Wk2i_)_${JsV9G*XXp(31&J*7 zJL=!q2KF!8w=nv$^>jYzeQ)9=?M-Lw+yB-o!`|wTkUeU!q}qN|J^=JN2(tl$CEO4e zE+7#QH~=Oo4;M;PzreyZ_DT;{?N5I6&%TgX#s2Kv&V2`4r5rf8zV0^@%!od_8HWYkthW%{#}gCQ2C1-@#M=UKL7mx7X@A<333l&OYWErM6tmyCwRQjBgh z-dDhIWMmQnrW6Q3FFv8dK&k;8j^M%+T?=Z_f~-Xxs0m!qpldZfQFB1bap`+_TO%}*{zA^*#fD=i8H!B-Rh7|}IftK5{f_MPCSEUgE literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_6_1_0.1/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_6_1_0.1/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..5a92ed86497cf2e4814691eb9be49bfa585d8d90 GIT binary patch literal 1620 zcmWIWW@Zs#fB;1XorytB4}csHW@Qjz2-V9gsAOai01E)c;Phm_P~U(^MuswmYW0-V z;^ZQAD+P6%G!u0l1@*N2qLQM-y!ia0lvI$oTVhUeDp0&QBe5VA$k#B_Q83ZeQK(fQ z8*nl99kH8pQfhzg6=^%a*p2(L)-Kt1hM(cUoexF_YEK;4r`O79n<%u>?zGs%{ZlxX z@73pJIk4(FqusKl`uihKPqLR@(Plrf=!4yd=05vt7rN~?@x9)EdzY#GyO$sK&6w!1 zF90Q2PFr7AnE~`Y2!nzp3>GXP0T6)Elm?3-g~9TisoDPD{S$T`(p(O^8LI6?#f0qT zEXDVudS}_1Bi|kXT@At@?*ziU0}=p%2VjzcfgVlscfw&4!j>q<{;dNUL4gyIeC<@U7fFKN8G&%W!<{&kvpcIVEnvELEc zX#Y5YX`iA(rY*x>HM{dkpY4<`v)X?+QMdo(eHr^oO-*~$U};PD)j9z5IS8`>gC*P$ z7A_zW5I6uPDGwJ)Q~%cd1@yd!{^Ci#No6q}ge|ANOozJR+_O9p5?JPd0+oAem{@Yu0JnKlwFpzf4Zgez9LC?JCpV?Cz^3+aFQcxo^g- zto>)XyY0mt?d-3goMy+d^{idU(Qo#Dx-IuL2yL))d)#ZkYWKT+Zoe4pr~hDdNbc&k zneyuiF#Rwxi2zdy1fUn6P+=g|01iiRVT!H=wP-=sA`a99E@;rTpk`lWEzf{jz?m6c s3u@9v*7BE$0h-X!^`IsTWIbP*fqKA+B*2@M4J5+~gp5GTZCOD)0MG`cEC2ui literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_6_1_0.1/last.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_4_6_1_0.1/last.npz new file mode 100644 index 0000000000000000000000000000000000000000..eee1dd7995f44898e4d50f0a52b2cdfb101efd83 GIT binary patch literal 1620 zcmWIWW@Zs#fB;2?)i+e%KLBz-n3X|N1;}M zY`~?_ea0?$AK!jn*U5IF{Zjj0T~>0qFoo?vpL@}MH^zf|?_OEvaBU)^9fJ$6!(QDR zc9R;O@1OkgvaQ3UfBPbDHP|bid*Yz$cHQ>=^@R@BMd$6iWsmQjnZRM6Izz;s%Sw7* z07|gb-uGEQ1L%7Y1_etPELcDSAONE&4HiQRgJu8sm3EV@Zrax9>De0{x@%YVgwuXq zN$Gx6@0_0~xZwfN)gTP=P9V%XAOR3~045n2DDsYpj)ED5-kDvw!d^a6^1$b|nfv=W zw(WPGthoP|=kopMY?|$UY0cdKWZxD$HMYBU7o+<2+x>d8Z(;q5{qp9i`|fU-Z~vm3 z)&6G0Ygoxm-F)wup*goCzuEL+B&s(l6lV)iNTTlcg0UbdSd?7RP-K+=BATW{=tF-h&d zzVM8_@3pmd6`jxRxh>xBw|+Hoe|~wX-5>wk`yWR&?~h;l$Zm;Vwf&*K0{cU^r`W25 z&e{L=XqWwuyP5Wz3P0{!Io-zYw$5gIyFEAd-t1n z?c4773YdNvnM8mo1p?5EPpB}EY5<2LxG+W6f?Bj7YY_)(0v9ysT2QkuvX*B+E#Se40389#ZCprt`UV!-MaFC z{rsAfwsrzt_OpJSw@cj+V0SI}p`GlHNA@B&w(c)haJFmrP_uU=f9BnCdp&1^1GjeU z-+ykJ`u+o3h3s5;!}e#SB-v+_?cLuZdu)H7W}^LzhvIfyrgzz0V4t`DWbm^6$?i@2 z<(@p-rxsOguk%mT{@&dh`%|40?4l1%u{%ED!2YS5MfYE9ci+$Y*WG@Z{c(FobCLb^ zh8zb}+UxC3&N;IOHO%z$L--~D!wQ7KVP-^em;sY4rRm_lpMd@L&6D@fm@;$!)#tpx zT*k;G!hpMI0y-WH8h}L=w4g%Qf}S-Y8W$9Nz!?=?3wjnoXt@W}0?sh#TF{dq pLd!-bSb{{?gB}G4Jx`f|dcYA9;LQq(9bisnWnctaK9dE+0{|CcfbjqT literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_6_2_1_0.1/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_6_2_1_0.1/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..b200037b72c5252d02823694c58284d5782c0652 GIT binary patch literal 1456 zcmWIWW@Zs#fB;1XQ5zj;0Y(M}5M~7mhU(=NR8IB_^$mz*WGG{(R!>PSPA*cnQc$-^ zGf~%3P*2M*Dk)0Li_b4gNd<|!CFT^T0>z6n5(`p+d<`=l1v5<@g<1u&0hjR^=KZs4 z-tUvtdAYCW`lcPAs!O|M82}!RB}S^v=w;EA*MM$Lr!m`==%D`_3sy?eA9X z+n+PJfB*B_GwgT2J+`kmc=kS~4UGFQ{bSsJze&pe?V8Q@*}IPIuXnJq?fSNPpNP}i zeH-c{?8INO+m|eQwr_LV`8|nZO?DTKPuVm3PK>iQRQ zc3<6o?DdH?x4-FLxqtrdY}-OVW_#<8A$H3YPVU#OoV9QFWuN^{8oT$cWiPTv_0op> ztyZuE%LepPxFI$CL}`kZ|2%oW@>d1>^HK);{pw%rf58y2Z$Z^(`)P}|?wh|pYM&T` z^8OU>efu}~@3S|(_1-RRSNHxEOgH!UB~7r`pSN`XlqSss(&v}%o8VDq|J1zHF8h76 zJ@<@;{ofQm?0;Fs;P9~JkDY#R|GvbQKhQr$WX>mt)7xvoLr=CrJ!z; zW}>d6pq`drR8o|f7oT60k_r-cOUx-w1&SAEBo?Fs`5IeoA`(gDax@xcg1^Z=2L;pFWk*{@|KF`)p1v z+ApHFVSmXpFMA;ck^QF_KkZG*OSaX&*ST-U#wcss+ZFat<{sLA^%?)ZJ4vVaX?@Vx zU$)m^U%FAgy|}vn{!ZcE{jO;T?bs}M_AXZlvtKRn-`?f)<$VTSNqYlOf=sE7??wkO zs6ZGLWMLEsnURiyA%#Kq!Lxh6(5Zd5X%ezQQUU2jX+{$M_j{ksI0?AdX)(?0I3?Ed@09Q)Uop5G_f zs<;1D`EmQy>6dI4E2i1*)4sQVMSHEiU^CMJdtv1Rq6<&$J6)e`e^;(|uOa_ayHj4S z`<=HkA82ClwtqkS)V|a$i}wY5+PR~;dh+cTFSXh)!=bSMwl&*+>7LvB zE-d4+uc;D73$v;<6JsU-!wQ7KVP-^em;sY4rRl({?11gIRUP|YI0f5xs9gpoT}CDm z2HZsx(D7i<04%DY1r@p$^sEWdz`)SJXbjW@&Zy{G(6b0a%RQhLaE3wGf}R8sS~fDl k5+u4F^e8~+dCCmb1CEdYZ&pz30COrU10&G#nJge40D;hPYybcN literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_6_2_1_0.1/last.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_100_64_6_6_2_1_0.1/last.npz new file mode 100644 index 0000000000000000000000000000000000000000..54f38a299767a3454d84d274032a62974e7be9c9 GIT binary patch literal 1456 zcmWIWW@Zs#fB;2?m$s!*0*nj{Aj}FB4AsjksGRH<>KhQr$WX>mt)7xvoLr=CrJ!z; zW}>d6pq`drR8o|f7oT60k_r-cOUx-w1&SAEBo?Fs`5IsVyS+!Pv^pXI|0^-d#?YVXul%DcV9`q)c!?p zdiU2(?%#iA#|(R``N#Gx*fDG0>-miP?`Sjaf7v8u|9R(T`zBONcXE%LLZe+q;Ho{>Z^zinJ>PDxb$I>0^?&W{0#JhNq4;Z& z4q#A$Feu2vC=N0s9R))QgDkCa%6_Tj!hNVtbzjACeFM;mAPjP9AjM7v#;y^CPHp3s zvGcM1vDfLTnf;sK%KbZa@@<3Tne91P!t5TuII+KwbJjk;hd%oSC3o+WSW#q;>ZQ8t zug}2}EE~{E;fB=k6QwD3nbMT~pZ+M=XQ>(NKcDzw|G%4o`&Q(AwtvdKb>Gd@sC|=I zmG`q|@7u2@v(Mh^`Fp##2i^O1gm3O&lRUxxbU^UHbQC z`xmVZ`(@NW?B7();NT(u*Dg+_e_v$v@%@uogZ5kek~Uol@MZqf$snS literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_32_29_4_6_10_0.05/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_32_29_4_6_10_0.05/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..23d7376b0ffb59e1c60e00a5abc1a669f3ac5987 GIT binary patch literal 2104 zcmb_dYfzMB6#fDb~8ZGMFMu;vtl9v!h&4$id?mg#f3~j7-S$XOn~Bw zYit6kVG1gmmcV;H4M=cMS5pvKydsVlNX$r-XcwJv+?oDFXXg3wo|)&zd7tMwN8&eX zv?cShY?*_0RUHxohS9-L+YEI|OiC>Z2wfzQ#pPUet6svvnXSq9Y1s^zYGr0e?Ob)CvMCHOx+64F@t7g}%GPNVu&kn4O1!aPlYDdND>2c6*J?ZBRHy94gKD#`V^Sx~;thQ)|0 zqSj*r$kar_<@*&-Y#@UZ^EIU6m?=A>9t++dR0^Z%Sv$oK)0oOIm$97vT zOwTT>o1N|mX0wvefA&F=QfrUvT{19zPZ^qb+lf;+ffzDl6!=}$(8kXTAUAafB$EXA z(pCu_iygr?rVWR##lePgyX&f^DlkwJMHMLm{IT^6p6Xr&%H@ezT%e*H@3+}tek2^V z34`V%M)*nUP@Q*oAvte&g=E%jgSU7@=%!@Y>q~y2eLaApCKC`%pKbZdtjlOZT{TcY)oqv6}Lh%r#-PXd^#ywiAQQYD}mOLc6D4dajgbxvE(0=sFl_ z5$^JT{K3c;A=f0K(+hmSkj@KnCi?>HaYefcY-};ZYKui=bpHZuemn^dkOB;!9w7=} zxDx~FI#AZ`D~g#i5j6<{cvI%k=UIFUZR&Iwo^jTQXVgY-q&nvYr_;@+I3SG30(<_s z+O(iGSYq>@cxoEbw7VV<64oHvP%c2Wcq~@MKSP1ao$SiJO(W|IiOt?V@-W{7XuN;j zB5x(VqY0{YIISjWH==7j#yDcPPhOp>G={_`yAxrs9FO!Nv>w1)Oq`; z@yh)t9fvZ=4#O0Z^P)#6@#7d+GXH)ewdNSEEbTA8I+*$t{T26;z%W^yWbK_DUU>Qx z{RqCM7>#}vNPUXFWnWW_wIP0KV116h1zvL=={UoNkoXzu+@akBh73nLr0p2p>mR^0 Bx2gaD literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_32_29_4_6_10_0.05/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_32_29_4_6_10_0.05/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..d307d4c53aa46a89a77f2dd153a582359654f35c GIT binary patch literal 2104 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 hs~L;jd(8}x^`_e*>W(f-wL9 literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_4_29_4_8_16_0.01/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_4_29_4_8_16_0.01/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..90ae3a2316cc1d2e82968d04ce0580e5b7509a91 GIT binary patch literal 2520 zcmb`Jdr;F?7RSR=#6Y1?S_;Kr*M>*7fTS3~-1B4cg$^1;5Rn4mp$oMrf!#q0Hbn(| z(F$r;1w=Or1G1tZVoC1#X((a^x2&R|p}SE~7uW(tSp}x6td2BLzZ(h zIsf2&>~Qyl_AFk2!+aNL)HpzGM;Nv^j$_e82)(K-fg6Q~Kt9?6sksMW?wUe)!>Wgt zrp$oE>Nw~+X@xC+RgrHWS`(*54y;z#M-|^BLz1$AR;(;TcFdElayyO<|5Qoas~RzT z*aLpt>83gMm;r4-9Xa@LBdigQlTxF#OrvNHd@5|ietHwfs_sC*kWN!pwgZ3IIkZsU z?82^gHKu_&a}1C4gvILZ_;5}jTJeXe_c$MxL8`Pl^ayTR^M`;dvkpV>*-kiF8U@OH z3+(-SDyr8pI8fuuJ~}fkJPy9j)IvsmMC;j19IWhMouCU`1nl^IYBfZ%^oI@RS#;_e$6vzvULv4lc{O& zkrVjr`*M6#{SJwbaAZejHDdn>XBg|bOZFFSLD!^YV13=tw62R@v)zK*c$?7irW`t@ zm5~0W6KvjK2aYd3B{erH)Yb84@Z$rEF@N_hx>Rq2Gh462yw8M!7P* z+A*l~+)KBb#G{n?2)r~USY{!HM-!vOd(X!xS#X!?o?9^8iOZ?!=YJuqJ(O@^NhdYW z7t;4xS4Na^OWHjwCS#kdNmr&0<-6|zlll*0V|tr3=6I8^k#oL>AJ)r6S zQ!*~%q2StM(wuu5%B_u=Skqn_p8Gb|HF{H~A|6gjj>@%NxyXeOg0U-fu)(1&_;DoOMcK5iD@f}!GBY+XSvZHcpl=HD0N11~wej={3jmU<*&?E1t83;y;V`kc?E>ME}9%Z$ zKZOG}gY>X<7L;Fc0SLV(t(UFE(QFr}#JGiNd=pTdYA5{?Yd9y0#n2FQ3|oH@Hgt)} z{`z{zQLO|2*s&iPLg zmsf%927v$h-so6f?Nj* zZ+8djy}?32*5}f>TaPcKsm}C3m>q)eeJnS##NGC1>72clXd-UqdSqm5&-?W+3I!-(Ff=-iTS}7)X{u!ENO&c2;3mZ6fS4+o`b1ty7H~AZd@xfrQ;~b6 cd2a@%nFLU_!puM;H<`?MMqHAYEexms0sjwilFGgDxi+aD+2?}>5Ey65rHv;mk0_1QIUt>tgx);fFMLL zK>~>iL)QY+U; z2P>J>Dl#^HSA1y9rr7xK2wi-2=#GR4KAx~OG%kX_TiYpQQimln=^p9-dJGRo8*t|9 z2Jrdh9^C(_9EM}J!_#dWN!lN$C=pqM-I63QwEcFbF1s~%VH}c`n245iT1`^j& z4D%n}BE7fF@kpQrS01#Uoo>1l#DclB`r;XypXv)EM!66VrI__e9)?Ul33WXMkZtXZ ziSU4U8FB{Xwq8N9rCg|6GZ43GQ$LV9x#LZ#zg{Q0?@^Zw8a6I@L=gEV9A ze9#Q8y7~p%nRo&uDii2?9L93LnnC3RFQ!j6qU9IVQ4WUodk z_qG8K+a$7iq@Df9K8QJLo(X>3and)mnw;)xqMlz}po7;2&}h3Bt5`>7%iY<`8c8KQ zNztH{b1wF;cpH8$m2ev^&(T}jbg zkGj451yye#*H=@#Vjqv2PCDfL#*LhlOlm71A95yX8F<*q9sBP(6Xk7RECxX%|y}eqCDl9f%6Q$CLN{$*qW_@rB_WjQ=2wm$Z;49 z`~q%Re+wpSK1GYCcVJu8TIJ#EfwW3Go71@!G0nS|wl^1(N8M_QOU)U_ z3K9Jvv>aBsgriNtk4niwH&U=P1D#xz5L}=SQ#$=2*(4hZRi$KJh#ZqwuEXJhdMfGg zWZShC*x%htY+^d$f%Qq4*x-ll$#0=sbS-Oe=R3A`C>Z5f0ed%Op@Eezq-&1hyG z#*TihQIx>DRfnM5Z9hym`zJ>CY=QE##&mei=6c(pi*(m?JEmuOAbGa`8ja|zf@dG) z;D&~JP{hVSP2EAI35|r#!W{HG=SzmlyCD5?7#deC0MA7MRMqo$JYg~$Os`IXD8&k_ zuH{H;$1%v^OzGk&NpP<+6&^j7!>X0(P}6o0HPalx@nRj$j649#`!eC7oIahzzRM1w}kl3Dj_)=0y&EjOR^HvXTi%enPM6|GY@(qEIXOou>(e>j-)Ilb7 z8W*8b!*^hSNwo-sjyr}-=nD_VmrmtMJ{iUo4?#oCq`)(ap%a7s_}AgKUm77HM>K?!>yS3-6eQ$f<8u-P~z+}kBk1c1;1J1 zjMp#ZlfG%g?0{YYrc^D1l_4V9_?Jb*J^c=DPZ@*;Pcf7~n2AtWp`07zh&j>M@Nvr! zx?j7bydOFdW+^ta@dm5N2i_v0cjYs*FIN-&4nUv3?xE{C&tboJ6e;oyCjAN_ou9c7 zr@5q}IJ*c6W*I}hcq-H%@*_V;&am=Lmm&T4E*uWr1#M9y_*`9%!tQJo23Hb~g2hzz zgEwwXTgbdTAcfz|MNDzY1m;;v1vRvs0Tm5(bmsiS?2dhNpeivLCW+d?re=h%kx(>C z@ZY~MJdC49SGE6qXvSK`uAo;2U7-{Br8K&b##+XXgx8ii{Dc@C5MwQ4TjaGx!PE4r iVa9sKBKO*3CgDA!0IEF1IvV-OBo+wyBpW8`ZvO^|=zR+S literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_3_2_1_0.1/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_3_2_1_0.1/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..769dfb3422ec251bf2d54ab2fa8ef63590120009 GIT binary patch literal 1252 zcmWIWW@Zs#fB;2?xs%tHod9w`m=%aa_3{cTC;Nr^21GJ4lrdDRr=%7q7pYq*sN1BO zsOu=Gr{x!w6eZ@x=NF}8(>1*t&3hMA6nv8IkftpeGAYx2b~yDo)X z`%T8O4hd%sZPj-2Im~UEY4f_H%Dy2}!~Wc@puHRPChw1Ux7&U%+xb0pmrvMDWD3~7 z>-g2(ZL4nXlM`0lU-i0WZvcu{J>1I+I)GjTVUSnDDE6w6j)EbDUiDzqw-=BQ*@Nm- z_01L+X8@fD!XT#xQtVV?9R(u_o$6FCvUgI3!U50skL;GR*4eL~RJbgc^(}R1J z1D61u48m+c9BxPrw^N#;wEE`S{d2st@25bk-TJpD_nS88*i}dy?zeq&(f(Rg=l-Cz z@%vEyVXN`r%LJhNK^W{0BZ~b2OfHnh!PH!dy$R;7dmW#I+wDzl1cp5$lL!Ou>*#ncz%p_nK fgdRy|pdN691bDN8Vh5N@SQ!|BmY)U6FfafBs<9OL literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_3_2_1_0.1/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_3_2_1_0.1/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..cd122071ad1d5a9ae4f550d3b73a77acf8e8d57f GIT binary patch literal 1252 zcmWIWW@Zs#fB;2?S7)!?I058g5$wPWB7+4Txl9C}XHrPf0CKE>gErP`61l zQP)vWPs=YVDN4+X&o4?z1&O;Q<`ky_#fvi%3sQl64Kp1DV@(}}S_QHJ*M{5oZ2$I# z*l%RNX}`?b&z80Pr@a-&M*GRGjrQ|oF4^6-3EY3+?acl29H-l_J)>+dprU5KDOL*FV>Gf9!;}y8=+W8o{P}y#we)5C(ZQjAE}E=_nXd=+#q!i}szobYMTK zQ(t8mD9ivl5rjcb4W!tq#ySc{6gt(wqHo``I`soPW^A@&{oH8JKjW1h!=kBZPERwQ zk-G%wWDsTp;&4N1xSi4zW%r7G@7Dz{_8q?FXD4TLZvUC8`TKm$Sof>OthWz$n7aQ( z!x!-!&k0Fw))age!;cW>%^8Jpd{MfPhBOag{IBa;XN?(7V7 zJQy@Ef+%q2M%RL#Eg%{g7#bK~1DW7Vg02NUc_Oq-1KI;ltmsk literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_3_2_1_0.1/last.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_3_2_1_0.1/last.npz new file mode 100644 index 0000000000000000000000000000000000000000..769dfb3422ec251bf2d54ab2fa8ef63590120009 GIT binary patch literal 1252 zcmWIWW@Zs#fB;2?xs%tHod9w`m=%aa_3{cTC;Nr^21GJ4lrdDRr=%7q7pYq*sN1BO zsOu=Gr{x!w6eZ@x=NF}8(>1*t&3hMA6nv8IkftpeGAYx2b~yDo)X z`%T8O4hd%sZPj-2Im~UEY4f_H%Dy2}!~Wc@puHRPChw1Ux7&U%+xb0pmrvMDWD3~7 z>-g2(ZL4nXlM`0lU-i0WZvcu{J>1I+I)GjTVUSnDDE6w6j)EbDUiDzqw-=BQ*@Nm- z_01L+X8@fD!XT#xQtVV?9R(u_o$6FCvUgI3!U50skL;GR*4eL~RJbgc^(}R1J z1D61u48m+c9BxPrw^N#;wEE`S{d2st@25bk-TJpD_nS88*i}dy?zeq&(f(Rg=l-Cz z@%vEyVXN`r%LJhNK^W{0BZ~b2OfHnh!PH!dy$R;7dmW#I+wDzl1cp5$lL!Ou>*#ncz%p_nK fgdRy|pdN691bDN8Vh5N@SQ!|BmY)U6FfafBs<9OL literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_4_2_1_0.1/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_4_2_1_0.1/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..706d91b383135e6b19cb1e8cae325329a4e5d5d4 GIT binary patch literal 1312 zcmWIWW@Zs#fB;2?i@zR9JOFY)m=%aa_3{cTC;Nr^21GJ4lrdDRr=%7q7pYq*sN1BO zsOu=Gr{x!w6eZ@x=NF}8(>1*t&3hMA6niKdQ1tpeGA>tE?#J0^3{ z1BPLT_dPFTu)B0D(*D4LT)Pchw%hS-n{BrtSJnPbn5A82?_9gP=MC%wxM$lZw{Ekm z`*zBn>sr`;U%AURGi6z98lB(UrKtDYmlw|6>yzJQyK&W`ebIB)?GHc+0>M=46&*mY zgD@xv!YB>`BOL`p3WI=W_9c7O>L`0ur`8DD0FIrq@4Y{ zskiK(2O90~Uy^DcpjNx@42#(QrbRdQYTV^Ifa(RC{{1cofKCTtHXsf+q=p|TO>vW? zxcAu~E!+??8z2IJAugjgW z|MAi|`|n%3?35R6L5rs3g+`4NfPMpEupf;m_9HM!Q5sLdKD>L6{cE%rZDBreZF&B_ z0B=Sn5eD2v0nqVa(7*_yzy$-k7WAwG(ZImaz{m{L1kOn4TF{d)Ld!a!7I1<_*Mgp8 p5LybEUNaU6 z>N*PQY57GZMTvRw`9&$IAaS?EoZ?iVcyUHzK`M~1VWy*CqN$@$t3Wp3ii|n9H{@N( z{8FiC{1z4 z7P0Pao3&-HoX(m3i#p!yO>i=^mosUzYcPwq_jLE)ce+yXKz_}w{if;X?baGEvd?X| z-M_TS)vhjSvR(b|O=!_Hg=d=g1fbtQ80<$Qiv0*oQk2G1WZOb}3x*c^IU7Ih=ifYK zUw}6wlL!Ouq5$Z4Flb-|QQ(3BT?=~FfoNc0XkcUpY652@bS>yf7@=hyPzyLgqiaD= qG6*e&Ot1umt_M8|5PCwHfqK9Z65!1WiXC81Vr5_iTF%J=;sF4XqB8*i literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_4_2_1_0.1/last.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_4_2_1_0.1/last.npz new file mode 100644 index 0000000000000000000000000000000000000000..18523ad41ced444dfd71544c812af609b1c33fce GIT binary patch literal 1312 zcmWIWW@Zs#fB;2?y1uRn4}csHW(DFNaU6 z>N*PQY57GZMTvRw`9&$IAaS?EoZ?iVcyUHzK`M~1VWy*CqN$@$t3Wp3;y?S(Zjr3$ zfu^X#`~H|Q*nRB?w?DQ&-cDl2cDuc=X4|bVR<@U_H@0({G}q4iv4MT#`C0ZACL8P? zeLZFWX+hY2ORW<&Uvn;5C+oepYZdIb5BV}s)>$*5rs}o;FGhD zYPn^9#Kmxb#HCbw4vYGIrdLGw`#Im-n|+b%0IC;$`DwBp06HCn*?>6QkQ#oVG{s%q z$+=JWanb(hIVbi@@UiY&bYrHS@a^7xuTm53Z)mvg+ZC&Gpf0jye`WS5ySL^`?7uzE z*za;T-u~I9E<2C2ThOA(y;p6@1fbtQ80<$Qiv0*oQk2G%;%3#ooZLyf p2BD>p36_A+^`J)qLQg0&P!Bjl0=!v4u>;IWtPG4m%Q;yKhQr$WX>mt)7xvoLr=CrJ!z; zW}>d6pq`drR8o|f7oT60k_r-cOUx-w1&SAEBo?Fs`5I_XD9Arj13WgL0S*+7UyM62L?n8Ad?}J3H4L~P?FvzKa6gw3dyG9f`wI*Vn zJy-j+J)JCV`|eLYxPMvizx@ZrtnCggT4cX&hmzfrT~YSlMw53t8|vBriK((f_0pg2 zG)Gv1WdnLC+>jc6qBO-u2^j4=zFl|UR4>MT(JdG3TY4|r-f_;`zr^Cq{xhZgd)?a& z>?J2T*soyn-mlZvu|H-?gZ;iHRyzjojdqr=bnK0PIM~l{{%ZfV>a4w)^Mw6>M7Hj0 zmJQpduD*W%x%ZFu-Fdcb|Ka{?`;PmmIC%Co?JISEW!Jlk*Wr7X;C_BJOMC5Qlk7yl zt=R9xUtk|1u-_In%+ycJl$`(!D-Z^UnGwZd228S)rh}y!YWr`?{@FJx$J5?+|2kki zGct)V;4Yegjt7GVU{M7vsL-{bXHAF(28ISkW1uE*Mn%_xo<$H^?g6!cGYq;G^dyMT nvXKdvAkp=pM*%|5Q)ZwZaD)VSvw~s=m{VC97=f10WC8I28Pt4R literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.01/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.01/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..2ee539ccbb8681b68c35cf53474f36980ee11aec GIT binary patch literal 1456 zcmWIWW@Zs#fB;2?e^S141sE9^K$sOM7^;_7P&wHz)HfiKk)e#CT0JGTIJrpON)c+q+jLPTGHS;wF31dE)ll_*dEs&pTxwfD&YruU5_J z00tEZgMuuK;vh59Q81)1$X>1dX7~B~Wm{CI9)5B0+y=K7@Ab3BUK$A8G&-Z7RP%}ejs zM8Ah6ST>-S!VRh6CrVT7)_m2ylc#^$`+v6k-oV!-_9;A0l{rl!` zSYW?*!Q8!)8UFikENyv6QY5Ep@GpDs0o}=(Y2sw5rmd|KrP@5gRTWV q2_m#?WP&9~bUo-%fY9@l8K?&wApzd3px6QCR8|H?pye}JKs*3>b&6sD literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.01/last.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.01/last.npz new file mode 100644 index 0000000000000000000000000000000000000000..d6d7f16247d6a6354a6ba38114ba2e80717d3339 GIT binary patch literal 1456 zcmWIWW@Zs#fB;2?&Z1|90*nj{Aj}FB4AsjksGRH<>KhQr$WX>mt)7xvoLr=CrJ!z; zW}>d6pq`drR8o|f7oT60k_r-cOUx-w1&SAEBo?Fs`5I_XD9Arj13WgL0S*+7UyM62L?n8Ad?}J3H4L~P?FvzKa6gw3dyG9f`wI*Vn zJy-j+J)JCV`|eLYxPMvizx@ZrtnCggT4cX&hmzfrT~YSlMw53t8|vBriK((f_0pg2 zG)Gv1WdnLC+>jc6qBO-u2^j4=zFl|UR4>MT(JdG3TY4|r-f_;`zr^Cq{xhZgd)?a& z>?J2T*soyn-mlZvu|H-?gZ;iHRyzjojdqr=bnK0PIM~l{{%ZfV>a4w)^Mw6>M7Hj0 zmJQpduD*W%x%ZFu-Fdcb|Ka{?`;PmmIC%Co?JISEW!Jlk*Wr7X;C_BJOMC5Qlk7yl zt=R9xUtk|1u-_In%+ycJl$`(!D-Z^UnGwZd228S)rh}y!YWr`?{@FJx$J5?+|2kki zGct)V;4Yegjt7GVU{M7vsL-{bXHAF(28ISkW1uE*Mn%_xo<$H^?g6!cGYq;G^dyMT nvXKdvAkp=pM*%|5Q)ZwZaD)VSvw~s=m{VC97=f10WC8I28Pt4R literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.05/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.05/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..c6707d3c92fd76bbd04dc610ae41b020d6c87241 GIT binary patch literal 1456 zcmWIWW@Zs#fB;2?OWQd93NSJ-fG{giFjOzEpmMTbsBb_dBSRTOwR%cwadMHmm4doW znu)rOf_hqhQAtr^UVMI0N-9X)EitD!6)0YukywxlGgT`b7Lm&lQr(NJLt@JVC!kw0~6$y+V40!VZYZ7 zF}oL`clX`pKWwKvmFK|CyyNz%>sRfQ4WD2euy@_Q`-PtNp9&@S1>O&^f4ysuEpOhY zJy&&9_8&jkw=Z(__Py0v>unSJwd~L9&f0q+f$u=!tlRd5s}}6%vCXj$Knb$^ZLNJB zz@P$QP>_XD9Arj13WgL0ndoyB`&S$aXihCE{ouL*=tK|(IW>@CrvhWwh(f2Hc5*(z zcuU7VtvPtV%^S!4J>e$yW*Lok&&>kuH5Fv`|31{W|5C1&{k8XX`}_V+M)Q)&=KDus z36>4$rEo)P_=(aK`|XeSf%|!T?Cw=EA9!QO;!w}kVjFWBJ$+!JI{pdHWoJ9 zPkUo=U`Dj?KGYO@=i8BO6M$g_!r(A7qBzWeNtV)daHB@U{u|%!eXkfU?R~m*1<=im zOd<@pizcAs!Jq+HR6z?WbS>yv6QY5Ep@GpDs0o}=(Y2sw5rmd|KrP@5gRTWV2_m#? mWP&9~bUo-%fY9@l8K?&wApzd3px6QCR8|H?pye}JKs*4|IDwA< literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.05/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_200_64_6_6_2_1_0.05/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..4ff08829f717bc0303d54a437564a19c639b96e0 GIT binary patch literal 1456 zcmWIWW@Zs#fB;2?U7;Pj1Q;0@K$sOM7^;_7P&wHz)HfiKk)e#CT0JGTIJrpONz`rd7QC$;V>$t38+POIovhUk|6k0pXH!`w}n>z}(foj2GRMY!+kPCg z%dG6(fAe7H{`_86`#oD~_Pu46vi}{dwLd6U^g#cC_x2huXYAh@onjw=5@gT5x*Bx= zg9?N}K^8`FkQwPH7*ZHy+JftB6%xL{+Vy`?bpUm-v8rCJerquHMAbX z5-c0gOW}sp@Drse_Om6GgT`b7Lm&lQr(NJLt@JVC!kw0~6$y+V40!VZYZ7 zF}oL`clX`pKWwKvmFK|CyyNz%>sRfQ4WD2euy@_Q`-PtNp9&@S1>O&^f4ysuEpOhY zJy&&9_8&jkw=Z(__Py0v>unSJwd~L9&f0q+f$u=!tlRd5s}}6%vCXj$Knb$^ZLNJB zz@P$QP>_XD9Arj13WgL0ndoyB`&S$aXihCE{ouL*=tK|(IW>@CrvhWwh(f2Hc5*(z zcuU7VtvPtV%^S!4J>e$yW*Lok&&>kuH5Fv`|31{W|5C1&{k8XX`}_V+M)Q)&=KDus z36>4$rEo)P_=(aK`|XeSf%|!T?Cw=EA9!QO;!w}kVjFWBJ$+!JI{pdHWoJ9 zPkUo=U`Dj?KGYO@=i8BO6M$g_!r(A7qBzWeNtV)daHB@U{u|%!eXkfU?R~m*1<=im zOd<@pizcAs!Jq+HR6z?WbS>yv6QY5Ep@GpDs0o}=(Y2sw5rmd|KrP@5gRTWV2_m#? mWP&9~bUo-%fY9@l8K?&wApzd3px6QCR8|H?pye}JKs*4|IDwA< literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_2_64_6_4_6_1_0.1/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_2_64_6_4_6_1_0.1/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..fe087af6cdec1b2c258cd615e60cf47d4c5d0484 GIT binary patch literal 1620 zcmWIWW@Zs#fB;2?U-#lSJ^*q+n3X|N1;}M zY`~?M`)2=6iADC3*}VI`jAq-V34PhO#QV9u`N>oJO%melZ53bJJLJr;tI7RicXR{O zfeDrK>`S!u9rVuJ+{fxIu>ax7$o+E3X$~%|UG^;V9LtFU((B~k`1`L*PLs+-#7@pp(thb(Z@ax+clI5)uYJH(DbU`Y>51L!*h}`(4litX zKAo}ecnIfyOU^g@-&*h7uX(w3|L%v+_de}^Y*%<+*511O=)M(Nw)-zg3fh}Z*lg>1 zKGNRv^5XsCtw;CmiSDtxbc1jIe9dDfcCWC1=<(B*$4+?vv|M&O$*IMAHrhx!Y)NaXTQ1AEc@y|q4slJqz<^`tk{p5x^K^ycqYKezyQKve;dL44H5wX7)?=n z0Oop1(}U`fGP~LQEPJME|FbJyXKT-SZ1JAWjmGN1;}M zY`~?M`)2=6iADC3*}VI`jAq-V34PhO#QV9u`N>oJO%melZ53bJJLJr;tI7RicXR{O zfeDrK>`S!u9rVuJ+{fxIu>ax7$o+E3X$~%|UG^;V9LtFU((B~k`1`L*PLs+-#7@pp(thb(Z@ax+clI5)uYJH(DbU`Y>51L!*h}`(4litX zKAo}ecnIfyOU^g@-&*h7uX(w3|L%v+_de}^Y*%<+*511O=)M(Nw)-zg3fh}Z*lg>1 zKGNRv^5XsCtw;CmiSDtxbc1jIe9dNaU6 z>N*PQY57GZMTvRw`9&$IAaS?EoZ?iVcyUHzK`M~1VWy*CqN$@$t3Wp3QVssS-`C!C zzgXnn{X$*o`xgZ5vU5(Iu+Ky`cmL`yJa%3z?fc)HXx+ayuFKvveTCi3Yk&6Lo8Mzs z%+9l4^`4}Ci6N`~t(|fEl6f`vfB3<(PvQ3_`;F6h>~hpx_e)%6-5-Dw1k!P@nLB`9 z2VqbUgi#y>Mmh?H6b1pWJFoqZhl=*7PR-w=`fvfzi69JeY9Pfp|g6u4kO*MgpPAQ~7L8W@>@n!p(eT?={=Mrc_F)B;Y>=vvT| p3_?pG6D$Ft>p_nKgq~1lpdN691bDN8Vh5O$SQ!|BmUFUzcmT4wG2H+F literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.05/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.05/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..609440750f94a1a48a8a6e97624c859f6c5a91ac GIT binary patch literal 1312 zcmWIWW@Zs#fB;2?g-c#0J^*q+m=%aa_3{cTC;Nr^21GJ4lrdDRr=%7q7pYq*sN1BO zsOu=Gr{x!w6eZ@x=NF}8(>1*t&3hMA6niKdQ1tpeGAE9lC~{o3y$ z_TO7Bx8FtL;l6#YZ2LWu0`}R*pWa`h;jr(5)%N`hCN=DD3n{a|d+>;z+im6jZ3Y+Y zSUgtlduu6d&%I!py+HWdy*1G*_I=;pvTy7DPxdA=*zMjKTkkuiSh_C&B?#`swEpM- zdL4v8K@di95E$tw7*ZGn9FG^-A7H;~kLuLdI%S_00G$ZJAg2aW>{JsS1tSWbntY&h z-}_Bj_Vt>x_vtzM*ze(NwJnH!v(Mc-Z=dm&WVF!Ud5rbg0ie@Cm<@=-4XNP=N>f~p z%FKONaU6 z>N*PQY57GZMTvRw`9&$IAaS?EoZ?iVcyUHzK`M~1VWy*CqN$@$t3Wp3QVssS-`C!C zzgXnn{X$*o`xgZ5vU5(Iu+Ky`cmL`yJa%3z?fc)HXx+ayuFKvveTCi3Yk&6Lo8Mzs z%+9l4^`4}Ci6N`~t(|fEl6f`vfB3<(PvQ3_`;F6h>~hpx_e)%6-5-Dw1k!P@nLB`9 z2VqbUgi#y>Mmh?H6b1pWJFoqZhl=*7PR-w=`fvfzi69JeY9Pfp|g6u4kO*MgpPAQ~7L8W@>@n!p(eT?={=Mrc_F)B;Y>=vvT| p3_?pG6D$Ft>p_nKgq~1lpdN691bDN8Vh5O$SQ!|BmUFUzcmT4wG2H+F literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.1/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.1/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..c3b0626c168d9a11534c08189c914ef3db0978b4 GIT binary patch literal 1312 zcmWIWW@Zs#fB;2?(SImM|!@#2icf>a=1!%RoPL{mqhR)K85Rk{DPeb0lK z{cSU+*y$$l9#G%>b$8{|R{M`%7Vo_f=(qp)S>xRq3HAGT^^5O+YO`Q}SLca6`YV|o zx}4|R@3?4U|3h+(`P%oL`^?!++Xc-v+h5vLw3pNQfnBpx@BYobv-bs{1VL1Lib4m_ z>mUpYf-s7Mz(_~IkisCC={0Gee;@OHRHyP)tcY3wbRr0YoEk{6Q%!Ufj3{)fPQ>c{ zdn_*O|B>duPw)QseQt-Y@84{8*ye*;xc#(?^U=HzA;zeG0O)iOW&`4ILu&Ye(iGQg zI(eV-rET`5PYd>?UohSu%aLav{&vn@E}>2K9ZBB%7oXg@Uunx$yYlUgc8cFv4tz{G zzVG`-rUO@8R_uQe8-(V^yYc^SOaS@~gu#9^qS%kXBt>aFvHrheci8%(-I~Qs_Onm( z+5~trGKnzYE((B-2ZIJi5Ctw6(6yjv9f$@7h6YAvpeAreLf3+xgb`ZS0kwb=G`be_ qB!kdW$OKD3=z7qj0HG(88K?&wApzd3px6QCBvuASpyiw_ARYjADLc9V literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.1/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.1/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..4f7176fb26e51d3a80e08ae08c7cf22b55a3f7ae GIT binary patch literal 1312 zcmWIWW@Zs#fB;2?)xM5)4}csHW(DFNaU6 z>N*PQY57GZMTvRw`9&$IAaS?EoZ?iVcyUHzK`M~1VWy*CqN$@$t3Wp33X(r>=leBz zKg)rsb~(B{2jcd=vU_0NV!vyi^uCofTKoOfciTB1Xx{&6it7F^=cezUlb^c(%ZktT z@>A#A_iydC|NS}1zL@3SzH=&Pu>@R5(HM0e0FyL zy$-^lAPA#42#j@Cr<&*}7*Xg{W7lK* zMgQI1|Bg@7Zm+`GeGBI;*}rJnC)>W`jP|Te^Y){9A>hBY!2zJtL6{AQ!wsq72TD`i zJ&uTd?+Q-YA6Zeo&n!1=zf=4!`#tXI`^5JxwO8M3us_GOdOz0=KRd218g}pIJ=}l5 zH*^1qI;I1nFXrxNy)zljkInp9nnA0VJ{Ir z%|5`Jkx7IBcToUzJQy@Ef+%pofUX5S>p(OxFf=eS12us&61o=jB#h9q4yXm3pwYFU qCmDp6LMB)OLf3;H1qeN%%s@Th2nq0J1;q|9C$Tax0xjoc0r3FGXEZMW literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.1/last.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_4_2_1_0.1/last.npz new file mode 100644 index 0000000000000000000000000000000000000000..77a3187f4cc90e155779e4c6e490c8b8ab328692 GIT binary patch literal 1312 zcmWIWW@Zs#fB;1X=Y2lu4}csHW(DFNaU6 z>N*PQY57GZMTvRw`9&$IAaS?EoZ?iVcyUHzK`M~1VWy*CqN$@$t3Wp3N+~&Q|K@(o z{_m@%*wrQQ9yrzbeYgIiR{PBKMSJ{K0l_aB-(dtU%b5PUtu^{WHu zbr1#xK^VnBV5Fm9NMR5pgiYF~_=tHws#9g3^_wmLIuV3HP7S2ksU|uKMie@AaqQ~- zmzgi@zx%>(U!(E&eRDTm-#_Kx8Jm|J;r2n#=A(JR_{+@62Y^loVKyKRH>8FiC{1yW z_LKINoZV)>b8ErAyu-%(Yrp2&Gb_&CJ6Ua$ecOKT{SWu-+w)t% z$M>CJU_Ou@xnlnt#vn95-un2_cmmLGAPn}S5ygH4CMinesqD}dJHE9S>=tZjvR75T zVIAPj$RxsmyC?uU9t;{7K@_-PK-Yqvbs!oT7#bLvfttV>30(_%5=LlQ2h;*i(CAvw qlMF&jArmYCq3c190)(DWW}qH$gamlAf?@}llUNxTftGW!fOr7y6h3YM literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_6_2_1_0.05/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_6_2_1_0.05/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..2150265293bfbbb14465fc1adc95cd7be82ec61a GIT binary patch literal 1456 zcmWIWW@Zs#fB;2?iRUaf3otS;fG{giFjOzEpmMTbsBb_dBSRTOwR%cwadMHmm4doW znu)rOf_hqhQAtr^UVMI0N-9X)EitD!6)0YukywxlJB@rF4KK^`IUAd7v&BdV4q@Ne9d$JkBFD{lirlaJMP|Rzir@AjGNt=` zlms1Xq(u(cvPRoCTo$x1=Mvg?oMqKM#V;Zbx{DU>Pc>ma&^IyPE&wISewfH@=l}*4 z2!nzwjN%|O(ory^Fvwn}soA{NKW~fb)OoE@#T$T51YwX<11WYYFm{b7bZSZ$zx|OJ zZ|r_eJYZ*faPR&HMjiVa?se|_ugATQC&_+)?%L{oj0$Y_cjc$=7g=!?E%d{Jy=KA^ zEE~{E;fB=k6QwD(>3QgW_m%MnPOF`E_#E@h{&IBTzSpNC_bZDo*vrH3=aBXC-hsJd zpY7M#1s%}Qe`!Def|LWpleh!VYq<}+(Nc6sYEjxfT`<$Zq*V66spnhv6|nm|{Qqxz zVD)}YTg|k*13X`x9L_G>Vjt$R)8WR9G`q!o3+&_1Jhl&bZ*X8C{|UQo`BDeHPdv9j zUpseyE1S^))MUV)?e97P7*-$*4l^T)!wi^YDNP4bCu;XUxFBl(EoqxwaZrbSfHxzP z2m|h-3Fvq*XaE*f(1HqG3wqXsXkcJyU^E750%ufoE$CSUq2(S>3pm4|Ye7$f2rV0# lUH$YcfHx~Bc7QpRm4Ojx`AilN4*(q`a4Y}- literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_6_2_1_0.05/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_400_64_6_6_2_1_0.05/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..d236ff0a261970793f2ac3c8b34214d0eef29d43 GIT binary patch literal 1456 zcmWIWW@Zs#fB;2?{OO;<1Q;0@K$sOM7^;_7P&wHz)HfiKk)e#CT0JGTIJrpONv-o6t_8~56`-L{Vlo^5BnGt{2xR*J13yZrvRb3ywxjk)ZMC)~C>E26(Y zr(N1X;@*_~i=EHdUvhbEzpL%{zOw~e_NiqB+1XrZ+yDQ`>-}fat?UC(g6z=tsRA9q zpaNk~kcCkkWJWp)h7<wC7{mbXW2jUO)E|98jxeg9iO>^roedEet3@%x{YoY`x&mCe5NQq2A^c{#Mu&lcel zhb34xpqIi8so^I|Q|zWm_xH=i-Q2II$hF_bVT=9k@@CtOlSTK->&e;cwJf(kqR_w3 zKKz~Cw7S##3;c8K`JQ;$zgK;`zv3*T!`^GF?e87z-ZxXCb#KS4wRT^Nmf9V?rm+8; z-6YV{%R_woA z)M|fo<-vW{H)QvtCW9YLE@l&eVFkkAFf*b!%z#Oj(sVF8Z~Ok8YSQ*Ux3t(SImM|!@#2icf>a=1!%RoPL{mqhR)K85RVDt&K4MeY z{zCs-_98Xs_nMYD?Dv_u)&2nMLp$$fLHoT=Gulu2Jjp)ywwjHk@YH?Yw<`A=KB(Ep zS)RII%JJ8Jy{!xOTjoyRm!{ogUtDr~|NDSdb_ab^?d1|X>~7gL><>T*f;!0(`wpPj zK^PPSVH5{}k&c2Pg+cJ^)TaHR;>+w&ow~4DZu$bC6G0f{)If@zYNDfHM4?kxeyFvd zy}aJuWYu%K;wd-xO})};ALU?TAHRdcVfO@O2UIU;H?#{K06HCn*?>6QkQ#oVG{sp= z;MnK?t$6wWgME3WU`DwVMR(DiKl4cqwl=f2);H}g}<{&Mr<``rRJ?*05&e*c-o zE<5-2Q}b&|d3Qshz*a2Rnw% z{&oT0j7%a7xQhay*oJOFY)m=%aa_3{cTC;Nr^21GJ4lrdDRr=%7q7pYq*sN1BO zsOu=Gr{x!w6eZ@x=NF}8(>1*t&3hMA6niKdQ1tpeGAYfsc;`|>4W z`!hps+uu#NwO2FVYX7r&TkThuJhT({blblmn$5oL+a&uWyBpRVyUO-0y;QdU`u3WA z->Xvge>whRKmU^j`wNq&?~9(=W6v6Ld%w$!Rd#NEsrFf~+U;WZ*6$BM2?EvSmUSIK zuY)is2*M~10wWy-Lkfc+b<3Ll<-P0dQJv~@MRVH%pc6qD^N-o~7ZdpR?_Tx5?(No`{XJ&K_bW>5+WYgC?*8JK zc002zQ}+j&-`c0KMq?kUACtQr=1u_m4TQmdG@{s#z$8U!JcV3MvoB}PwJWZ=WA~!M z%`U*3kx7IBcToUzJQy@Ef+%pofUX5S>p(OxFf=eS12us&61o=jB#h9q4yXm3pwYFU qCmDp6LMB)OLf3;H1qeN%%s@Th2nq0J1;q|9C$Tax0xjoc0r3EQcsObR literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_500_64_6_4_2_1_0.05/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_500_64_6_4_2_1_0.05/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..f59c67b297cc00b2efdd1ddc9c772a6318bb6170 GIT binary patch literal 1312 zcmWIWW@Zs#fB;2?Lo;W-d;sKtFe?y;>g5$wPWB7+4Txl9C}XHrPf0CKE>gErP`61l zQP)vWPs=YVDN4+X&o4?z1&O;Q<`ky_#fvi%3sQl64Kp1D6HOh3S_QHJ*C*A#c6T>k z+Pk0S%YN2f$@aH6+HCXVlJ~N(Uf!#avUz`5Xro=b9*f<(#in-3r~cSgvhKC#``2Q- zy;sL>mUpYf-s7Mz(_~IkisA+FaNUdqz9)xs#EuehHxwZIuV3HP7S2ksU|uKMie^rUv%KU z`#a|DKT|Jg*A_c-?~45m_R=%C53E#Vwf!-t6U_@AYc(7W0G$rPY(N}tNDV(wn&Rg4 zwAuUFuGnvFEP6oT#_s*`TesM&AN;t_{L=jW=O0Ynzf<=6{++LS?H4*dxBK!fY9Cug z!v4=*Klkl<*swo^m&XA$nk>Aph))3e4TQmdG@{s#z$8U!JW0Rxv$u`R-RG(SImM|!@#2icf>a=1!%RoPL{mqhR)K85rSpfup5=+g z{uTW4`=y+`?ay_uww3=Hu}@vW#Gdu$!Tr+DTkK?ozU@_$n`^)A;7PklyY|}8*mJ~= z^~gdy7oU0dmgj!kJ6>+zKjm}!zQTHw{i*--_qT^@?Em0zyO)D$wOs&85F9yV64?Rt zItYV;AdKQ5Fw#*lq%a7Mc+9u|R;*`_>eSCOCAt;>oe07prv_5&R1+NqBMO~rVU=&k zFO<7K;oDN%>y~-8@_r2VlJUX^UO0Z-|0J{_OW&*|~rAH(6SDw1)QMKwV)>% ogqA`kSOP-VgB}G4J)z7%J>Uol@MZ(SImM|!@#2icf>a=1!%RoPL{mqhR)K85m7?<3>Hz zy)3F<_RrswY=4=(&DK9CZSQ)8OM5#~Ht#nLZ?xOm#A3%f*VvBl+8?`FEPL%Gb=qth zIJE8huFSDldGp);zVZsIpy_VA{`3g$zr&}$KlqX0ewIM7z3XPLvkO28g6%N}4t4;& z4#J=y2%|U%jC2$XDGY*u-=FtA|G;UF>Qv^n(?2W#IuV3HP7S2ksU|uKMie?#=U%|R zu=R8I^Qj2hom8K>mt$9heb^%I13t@HZQpixqItoxU;XU?pwmH^4T!@Hso@7oQ(Rkj zoBb=_75kTJi5^IJynDapwk`IbSAN`AaCQEEkLy$So5+6OAOEh`p1Jm!-LI8V`;;pZ z_P^)+x$n^3hW$c9JPxSQWc_7p;RK-HKp5;tBZ~b9Oj4A_lg}qVd%f$q`zGuDwKq;} z0OkTlCJ_eQMFG(9V9>w_qQC_Mx)$`T1JS_1(7?zH)CA5*=vvT|Fha{ZpcZg~M%RL# qWDr^knP3SBT@QK`AoPSX1NDF-B*2>$6g$A2#LB=3w49R#!~+1*3OCRI literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_500_64_6_4_2_1_0.1/best.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_500_64_6_4_2_1_0.1/best.npz new file mode 100644 index 0000000000000000000000000000000000000000..bd4a3bee67fe3cc60c56d3997a8ba3f62dfac302 GIT binary patch literal 1312 zcmWIWW@Zs#fB;1Xx!i|u9{@QZ%nHPzdU*wvll?+{10oq2${4EEQ&NkQi`1(SImM|!@#2icf>a=1!%RoPL{mqhR)K85Wj3kvU{KR> z$M?Z@P9F@q9FJ{}KV0mz%z5J;XP1ou{myBHribfy_BvZKE4WPC9OFDiVdkOt)#scx zze#bn`BOL`p3WI=gQI73r%d57iPQCVIfyV-%6G0f{)If@zYNDfHM4?lSbCT^s zE}HEB^^kSHcYD8m?7lX8)0FkQ1r+t|mF}(Bhw6n_S9uZ+0G$rPY(N}tNDV(wn&PsI zQw}=aDLj08LWooU#F)c;+x?ELUC8c~n%C`YTg!W>t76~b!|eu#);eZ5`}gNM|BF;R zeAeOXK}r7(=X3kC4x{?<{GD_6CII~g!eBodQS3)xlA<)8W`CZw-$=gPo@0CdKD!ki z_5t3EOd<@pivpnI!JvT=M1czibS>yv2cm(2p@ESZs0o~r(6yi^VT6`-KrP?|jjjbf q$sn{8GQkoMx*qf>KJvNPsshD0YB3iIss7XgMbfhz9^#EjarC literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_500_64_6_4_2_1_0.1/init.npz b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_500_64_6_4_2_1_0.1/init.npz new file mode 100644 index 0000000000000000000000000000000000000000..fca043ccf68089c0687b977c88549c1fdbcd7e30 GIT binary patch literal 1312 zcmWIWW@Zs#fB;1XmPJc!9{@QZ%nHPzdU*wvll?+{10oq2${4EEQ&NkQi`1(SImM|!@#2icf>a=1!%RoPL{mqhR)K85wW;mqKIVJN z_fBdux%&_AI*c*5@1C?2kQOu@5!0OKnSD9{@TXgxP>N+>jc6pftsO znwh)*^|Yh=W)+DaxRu{%&ui;zUsm3*&mt<+zRiKfJ~h12K6Dzh!@rB^`~N5MI$V3q zxc~fPKl>#em-k%{n_-9Q$Hu6s=O+OD2Et%J8d2;=V3MLVo(^;L?KfCeX8&84d*9u? zoxr5U$RxsmyC?uU9t;{7K@_-PK-Yqvbs!oT7#bLvfttV>30(_%5=LlQ2h;*i(CAvw qlMF&jArmYCq3c190)(DWW}qH$gamlAf?@}llUNxTftGW!fOr5m?mNc- literal 0 HcmV?d00001 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn.py b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_Name.py similarity index 99% rename from B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn.py rename to B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_Name.py index a9d8583c..cc9a0872 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn.py +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_Name.py @@ -352,12 +352,12 @@ class net(object): if __name__=='__main__': dataReader = load_data() - eta = 0.01 + eta = 0.05 max_epoch = 200 - batch_size = 16 + batch_size = 32 num_input = dataReader.num_feature - num_hidden1 = 8 - num_hidden2 = 8 + num_hidden1 = 4 + num_hidden2 = 6 num_output = dataReader.num_category model = str.format( "Level5_DeepRnn_{0}_{1}_{2}_{3}_{4}_{5}_{6}", diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_PM25.py b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_PM25.py new file mode 100644 index 00000000..d065c4e4 --- /dev/null +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_DeepRnn_PM25.py @@ -0,0 +1,353 @@ +# Copyright (c) Microsoft. All rights reserved. +# Licensed under the MIT license. See LICENSE file in the project root for full license information. + +from matplotlib import pyplot as plt +import numpy as np +import os +import math +import matplotlib.pyplot as plt +import matplotlib.ticker as ticker + +from MiniFramework.EnumDef_6_0 import * +from MiniFramework.ActivationLayer import * +from MiniFramework.ClassificationLayer import * +from MiniFramework.LossFunction_1_1 import * +from MiniFramework.TrainingHistory_3_0 import * +from MiniFramework.HyperParameters_4_3 import * +from MiniFramework.WeightsBias_2_1 import * +from ExtendedDataReader.PM25DataReader import * + + +def load_data(net_type, num_step): + dr = PM25DataReader(net_type, num_step) + dr.ReadData() + dr.Normalize() + dr.GenerateValidationSet(k=1000) + return dr + +class timestep(object): + # for the first cell, prev_s should be zero + def forward(self, x, U, V, Q, W1, W2, prev_s1, prev_s2, isFirst, isLast): + self.U = U + self.V = V + self.Q = Q + self.W1 = W1 + self.W2 = W2 + self.x = x + + # level 1 + if (isFirst): + # 公式1 + self.h1 = np.dot(x, U) + else: + # 公式3 + self.h1 = np.dot(x, U) + np.dot(prev_s1, W1) + # 公式5 + self.s1 = Tanh().forward(self.h1) + + # level 2 + if (isFirst): + # 公式2 + self.h2 = np.dot(self.s1, self.Q) + else: + # 公式4 + self.h2 = np.dot(self.s1, self.Q) + np.dot(prev_s2, W2) + # 公式6 + self.s2 = Tanh().forward(self.h2) + + if (isLast): + # 公式7 + self.z = np.dot(self.s2, V) + # 公式8 + self.a = self.z + + # for the first cell, prev_s should be zero + # for the last cell, next_dh should be zero + def backward(self, y, prev_s1, prev_s2, next_dh1, next_dh2, isFirst, isLast): + if (isLast): + # 公式12 + self.dz = (self.a - y) + else: + # 公式16 + self.dz = np.zeros_like(y) + # end if + + if (isLast): + # 公式13 + self.dh2 = np.dot(self.dz, self.V.T) * Tanh().backward(self.s2) + else: + # 公式17 + self.dh2 = np.dot(next_dh2, self.W2.T) * Tanh().backward(self.s2) + # end if + + if (isLast): + # 公式14 + self.dV = np.dot(self.s2.T, self.dz) + else: + # 公式18 + self.dV = np.zeros_like(self.V) + + # 公式10 + self.dQ = np.dot(self.s1.T, self.dh2) + + if (isLast): + # 公式15 + self.dh1 = np.dot(self.dh2, self.Q.T) * Tanh().backward(self.s1) + else: + # 公式19 + self.dh1 = np.dot(next_dh1, self.W1.T) * Tanh().backward(self.s1) + + # 公式11 + self.dU = np.dot(self.x.T, self.dh1) + + if (isFirst): + # 公式20 + self.dW1 = np.zeros_like(self.W1) + self.dW2 = np.zeros_like(self.W2) + else: + # 公式21,22 + self.dW1 = np.dot(prev_s1.T, self.dh1) + self.dW2 = np.dot(prev_s2.T, self.dh2) + # end if + + +class net(object): + def __init__(self, hp, model_name): + self.hp = hp + self.model_name = model_name + self.subfolder = os.getcwd() + "/" + self.__create_subfolder() + print(self.subfolder) + + if (self.load_parameters(ParameterType.Init) == False): + self.U,_ = WeightsBias_2_1.InitialParameters(self.hp.num_input, self.hp.num_hidden1, InitialMethod.Normal) + self.Q,_ = WeightsBias_2_1.InitialParameters(self.hp.num_hidden1, self.hp.num_hidden2, InitialMethod.Normal) + self.V,_ = WeightsBias_2_1.InitialParameters(self.hp.num_hidden2, self.hp.num_output, InitialMethod.Normal) + self.W1,_ = WeightsBias_2_1.InitialParameters(self.hp.num_hidden1, self.hp.num_hidden1, InitialMethod.Normal) + self.W2,_ = WeightsBias_2_1.InitialParameters(self.hp.num_hidden2, self.hp.num_hidden2, InitialMethod.Normal) + self.save_parameters(ParameterType.Init) + #end if + + self.loss_fun = LossFunction_1_1(self.hp.net_type) + self.loss_trace = TrainingHistory_3_0() + self.ts_list = [] + for i in range(self.hp.num_step+1): + ts = timestep() + self.ts_list.append(ts) + #end for + + def __create_subfolder(self): + if self.model_name != None: + path = self.model_name.strip() + path = path.rstrip("/") + isExists = os.path.exists(path) + if not isExists: + os.makedirs(path) + return path + + def forward(self,X): + self.x = X + self.batch = self.x.shape[0] + self.ts = self.x.shape[1] + for i in range(0, self.ts): + if (i == 0): + self.ts_list[i].forward( + X[:,i], + self.U, self.V, self.Q, self.W1, self.W2, + None, None, + True, False) + elif (i == self.ts - 1): + self.ts_list[i].forward( + X[:,i], + self.U, self.V, self.Q, self.W1, self.W2, + self.ts_list[i-1].s1[0:self.batch], self.ts_list[i-1].s2[0:self.batch], + False, True) + else: + self.ts_list[i].forward( + X[:,i], + self.U, self.V, self.Q, self.W1, self.W2, + self.ts_list[i-1].s1[0:self.batch], self.ts_list[i-1].s2[0:self.batch], + False, False) + #end for + return self.ts_list[self.ts-1].a + + def backward(self,Y): + for i in range(self.ts-1, -1, -1): + if (i == 0): + self.ts_list[i].backward( + Y, + None, None, + self.ts_list[i+1].dh1[0:self.batch], self.ts_list[i+1].dh2[0:self.batch], + True, False) + elif (i == self.ts - 1): + self.ts_list[i].backward( + Y, + self.ts_list[i-1].s1[0:self.batch], self.ts_list[i-1].s2[0:self.batch], + None, None, + False, True) + else: + self.ts_list[i].backward( + Y, + self.ts_list[i-1].s1[0:self.batch], self.ts_list[i-1].s2[0:self.batch], + self.ts_list[i+1].dh1[0:self.batch], self.ts_list[i+1].dh2[0:self.batch], + False, False) + #end for + + def update(self): + du = np.zeros_like(self.U) + dv = np.zeros_like(self.V) + dq = np.zeros_like(self.Q) + dw1 = np.zeros_like(self.W1) + dw2 = np.zeros_like(self.W2) + for i in range(self.ts): + du += self.ts_list[i].dU + dv += self.ts_list[i].dV + dq += self.ts_list[i].dQ + dw1 += self.ts_list[i].dW1 + dw2 += self.ts_list[i].dW2 + #end for + self.U = self.U - du * self.hp.eta / self.batch + self.V = self.V - dv * self.hp.eta / self.batch + self.Q = self.Q - dq * self.hp.eta / self.batch + self.W1 = self.W1 - dw1 * self.hp.eta / self.batch + self.W2 = self.W2 - dw2 * self.hp.eta / self.batch + + def save_parameters(self, para_type): + if (para_type == ParameterType.Init): + print("save init parameters...") + self.file_name = str.format("{0}/init.npz", self.subfolder) + elif (para_type == ParameterType.Best): + print("save best parameters...") + self.file_name = str.format("{0}/best.npz", self.subfolder) + elif (para_type == ParameterType.Last): + print("save last parameters...") + self.file_name = str.format("{0}/last.npz", self.subfolder) + #endif + np.savez(self.file_name, U=self.U, V=self.V, Q=self.Q, W1=self.W1, W2=self.W2) + + def load_parameters(self, para_type): + if (para_type == ParameterType.Init): + print("load init parameters...") + self.file_name = str.format("{0}/init.npz", self.subfolder) + w_file = Path(self.file_name) + if w_file.exists() is False: + return False + elif (para_type == ParameterType.Best): + print("load best parameters...") + self.file_name = str.format("{0}/best.npz", self.subfolder) + elif (para_type == ParameterType.Last): + print("load last parameters...") + self.file_name = str.format("{0}/last.npz", self.subfolder) + #endif + data = np.load(self.file_name) + self.U = data["U"] + self.V = data["V"] + self.Q = data["Q"] + self.W1 = data["W1"] + self.W2 = data["W2"] + return True + + def train(self, dataReader, checkpoint=0.1): + self.dataReader = dataReader + min_loss = 10 + max_iteration = math.ceil(self.dataReader.num_train/self.hp.batch_size) + checkpoint_iteration = (int)(math.ceil(max_iteration * checkpoint)) + for epoch in range(self.hp.max_epoch): + dataReader.Shuffle() + for iteration in range(max_iteration): + # get data + batch_x, batch_y = dataReader.GetBatchTrainSamples(self.hp.batch_size, iteration) + # forward + self.forward(batch_x) + # backward + self.backward(batch_y) + # update + self.update() + # check loss + total_iteration = epoch * max_iteration + iteration + if (total_iteration+1) % checkpoint_iteration == 0: + #loss_train,acc_train = self.check_loss(batch_x, batch_y) + X,Y = dataReader.GetValidationSet() + loss_vld,acc_vld = self.check_loss(X,Y) + self.loss_trace.Add(epoch, total_iteration, None, None, loss_vld, acc_vld, None) + print(str.format("{0}:{1}:{2:3f} loss={3:6f}, acc={4:6f}", epoch, total_iteration, self.hp.eta, loss_vld, acc_vld)) + if (loss_vld < min_loss): + min_loss = loss_vld + self.save_parameters(ParameterType.Best) + #endif + #end for + self.save_parameters(ParameterType.Last) + self.loss_trace.ShowLossHistory( + self.hp.toString(), + XCoordinate.Epoch) + + def check_loss(self,X,Y): + a = self.forward(X) + loss,acc = self.loss_fun.CheckLoss(a, Y) + return loss, acc + + def test(self, dataReader): + print("testing...") + X,Y = dataReader.GetTestSet() + count = X.shape[0] + loss,acc = self.check_loss(X,Y) + print(str.format("loss={0:6f}, acc={1:6f}", loss, acc)) + +def test(net, dataReader, num_step, pred_step, start, end): + X,Y = dataReader.GetTestSet() + assert(X.shape[0] == Y.shape[0]) + count = X.shape[0] - X.shape[0] % pred_step + A = np.zeros((count,1)) + + for i in range(0, count, pred_step): + A[i:i+pred_step] = predict(net, X[i:i+pred_step], num_step, pred_step) + + loss,acc = net.loss_fun.CheckLoss(A, Y[0:count]) + print(str.format("pred_step={0}, loss={1:6f}, acc={2:6f}", pred_step, loss, acc)) + + plt.plot(A[start+1:end+1], 'r-x', label="Pred") + plt.plot(Y[start:end], 'b-o', label="True") + plt.legend() + plt.show() + +def predict(net, X, num_step, pred_step): + A = np.zeros((pred_step, 1)) + for i in range(pred_step): + x = set_predicated_value(X[i:i+1], A, num_step, i) + a = net.forward(x) + A[i,0] = a + #endfor + return A + +def set_predicated_value(X, A, num_step, predicated_step): + x = X.copy() + for i in range(predicated_step): + x[0, num_step - predicated_step + i, 0] = A[i] + #endfor + return x + +if __name__=='__main__': + net_type = NetType.Fitting + num_step = 48 + dataReader = load_data(net_type, num_step) + eta = 0.1 #0.1 + max_epoch = 200 # 100 + batch_size = 64 #64 + num_input = dataReader.num_feature + num_hidden1 = 3 + num_hidden2 = 2 + num_output = dataReader.num_category + + model = str.format( + "Level5_DeepRnn_{0}_{1}_{2}_{3}_{4}_{5}_{6}", + max_epoch, batch_size, num_input, num_hidden1, num_hidden2, num_output, eta) + hp = HyperParameters_4_4( + eta, max_epoch, batch_size, + num_step, num_input, num_hidden1, num_hidden2, num_output, + net_type) + + n = net(hp, model) + n.load_parameters(ParameterType.Best) + #n.train(dataReader, checkpoint=1) + pred_steps = [8,4,2,1] + for i in range(4): + test(n, dataReader, num_step, pred_steps[i], 1050, 1150) \ No newline at end of file diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_NameClassifier_Last.py b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_NameClassifier_Last.py index d3452ad5..1c386f7c 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_NameClassifier_Last.py +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/Level5_NameClassifier_Last.py @@ -268,11 +268,11 @@ class net(object): if __name__=='__main__': dataReader = load_data() - eta = 0.005 - max_epoch = 100 - batch_size = 16 + eta = 0.1 # 0.1 + max_epoch = 100 # 100 + batch_size = 32 # 32 num_input = dataReader.num_feature - num_hidden = 4 + num_hidden = 6 # 8 num_output = dataReader.num_category model = str.format("CharName_{0}_{1}_{2}_{3}_{4}_{5}", max_epoch, batch_size, num_input, num_hidden, num_output, eta) hp = HyperParameters_4_3( diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/ch19.pyproj b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/ch19.pyproj index fb15c336..cad772d3 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/ch19.pyproj +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/SourceCode/ch19-RNNBasic/ch19.pyproj @@ -4,7 +4,7 @@ 2.0 5d4fb01a-4f60-4851-8c54-58573e7c39ed . - Level5_DeepRnn.py + Level5_DeepRnn_PM25.py . @@ -34,7 +34,8 @@ - + + diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/11.0-多入多出双层-非线性多分类.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/11.0-多入多出双层-非线性多分类.md index 5cf51042..85f1ed5e 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/11.0-多入多出双层-非线性多分类.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/11.0-多入多出双层-非线性多分类.md @@ -9,7 +9,9 @@ 前面用异或问题和弧形样本学习了二分类,现在我们看看如何用它来做非线性多分类。 -我们有如下1000个样本和标签: +我们有如表11-1所示的1000个样本和标签: + +表11-1 多分类问题数据样本 |样本|x1|x2|y| |---|---|---|---| @@ -18,10 +20,12 @@ |...|...|...|...| |1000|0.38230143|-0.16455377|2| -还好这个数据只有两个特征,所以我们可以用可视化的方法展示,如下图: +还好这个数据只有两个特征,所以我们可以用可视化的方法展示,如图11-1: +图11-1 可视化样本数据 + 一共有3个类别: 1. 蓝色方点 @@ -40,9 +44,9 @@ ### 11.0.2 多分类模型的评估标准 -我们以三分类问题举例,假设每类有100个样本,一共300个样本,最后的分类结果是: +我们以三分类问题举例,假设每类有100个样本,一共300个样本,最后的分类结果如表11-2所示: -表11-1 +表11-2 多分类结果的混淆矩阵 |样本所属类别|分到类1|分到类2|分到类3|各类样本总数|精(准)确率| |---|---|---|---|---|---| @@ -51,11 +55,11 @@ |类3|1|4|95|100|95%| |总数|101|93|106|300|89.67%| -- 第1类样本,被错分到2类4个,错分到3类6个,正确90个 -- 第2类样本,被错分到1类9个,错分到3类5个,正确84个 -- 第3类样本,被错分到1类1个,错分到2类4个,正确95个 +- 第1类样本,被错分到2类4个,错分到3类6个,正确90个; +- 第2类样本,被错分到1类9个,错分到3类5个,正确84个; +- 第3类样本,被错分到1类1个,错分到2类4个,正确95个。 -总体的准确率是89.67%。三类的精确率是90%、84%、95%。实际上表11-1也是混淆矩阵的扩展形式。 +总体的准确率是89.67%。三类的精确率是90%、84%、95%。实际上表11-2也是混淆矩阵在二分类基础上的扩展形式,其特点是在对角线上的值越大越好。 当然也可以计算每个类别的Precision和Recall,但是只在需要时才去做具体计算。比如,当第2类和第3类混淆比较严重时,为了记录模型训练的历史情况,才会把第2类和第3类单独拿出来分析。 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/11.1-非线性多分类实现.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/11.1-非线性多分类实现.md index 2ba7d610..bafa80de 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/11.1-非线性多分类实现.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/11.1-非线性多分类实现.md @@ -5,8 +5,12 @@ ### 11.1.1 定义神经网络结构 +先设计出能完成非线性多分类的网络结构,如图11-2所示: + +图11-2 非线性多分类的神经网络结构图 + - 输入层两个特征值x1, x2 $$ x= @@ -53,8 +57,12 @@ $$ ### 11.1.2 前向计算 +根据网络结构,可以绘制前向计算图,如图11-3所示: + +图11-3 前向计算图 + #### 第一层 - 线性计算 @@ -133,8 +141,12 @@ m为样本数,n为类别数。 ### 11.1.3 反向传播 +根据前向计算图,可以绘制出反向传播的路径如图11-4: + +图11-4 反向传播图 + 在第7.1中学习过了Softmax与多分类交叉熵配合时的反向传播推导过程,最后是一个很简单的减法: $$ @@ -217,20 +229,20 @@ if __name__ == '__main__': ### 11.1.5 运行结果 -首先显示原始样本分布: - - - -损失函数记录: +训练过程如图11-5所示: -迭代了5000次,没有到底损失函数小于0.1的条件。 +图11-5 训练过程中的损失函数值和准确率值的变化 -分类结果图示: +迭代了5000次,没有到达损失函数小于0.1的条件。 + +分类结果如图11-6所示: +图11-6 分类效果图 + 因为没达到精度要求,所以分类效果一般。从分类结果图上看,外圈圆形差不多拟合住了,但是内圈的方形还差很多。 打印输出: diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/11.2-非线性多分类的工作原理.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/11.2-非线性多分类的工作原理.md index f96ed517..ed4da03c 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/11.2-非线性多分类的工作原理.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/11.2-非线性多分类的工作原理.md @@ -7,6 +7,10 @@ 下面列出了隐层神经元为2、4、8、16、32、64的情况,设定好最大epoch数为10000,以比较它们各自能达到的最大精度值的区别。每个配置只测试一轮,所以测出来的数据有一定的随机性。 +表11-3展示了隐层神经元数与分类结果的关系: + +表11-3 神经元数与网络能力及分类结果的关系 + |神经元数|损失函数|分类结果| |---|---|---| |2||| @@ -55,12 +59,14 @@ def Show3D(net, dr): plt.show() ``` -上述代码首先使用测试集(500个样本点)在已经训练好的网络上做一次推理,得到了隐层的计算结果,然后分别用net.Z1和net.A1的三列数据做为XYZ坐标值,绘制三维点图。 +上述代码首先使用测试集(500个样本点)在已经训练好的网络上做一次推理,得到了隐层的计算结果,然后分别用net.Z1和net.A1的三列数据做为XYZ坐标值,绘制三维点图,列在表11-4中做比较: + +表11-4 工作原理可视化 ||正视角|侧视角| |---|---|---| |z1||| -||通过线性变换只能得到在三维空间中的线性平面|从侧面看的线性平面| +||通过线性变换得到在三维空间中的线性平面|从侧面看的线性平面| |a1||| ||通过激活函数的非线性变化,被空间挤压成三角形|从侧面看三种颜色分成了三层| @@ -74,9 +80,11 @@ net.A1的点图含义是,经过激活函数做非线性变换后的图。由 更高维的空间无法展示,所以当隐层神经元数量为4或8或更多时,基本无法理解空间变换的样子了。但是有一个方法可以近似地解释高维情况:在三维空间时,蓝色点会被推挤到一个角落形成一个三角形,那么在N(N>3)维空间中,蓝色点也会被推挤到一个角落。由于N很大,所以一个多边形会近似成一个圆形,也就是我们下面要生成的这些立体图的样子。 -我们延续9.2节的3D效果体验,但是,多分类的实际实现方式是1对多的,所以我们只能一次显示一个类别的分类效果图。 +我们延续9.2节的3D效果体验,但是,多分类的实际实现方式是1对多的,所以我们只能一次显示一个类别的分类效果图,列在表11-5中: -|斜侧图|投影图| +表11-5 分类效果图 + +||| |---|---| ||| |红色:类别1样本区域|红色:类别2样本区域| diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.0-多入多出三层-多变量非线性分类.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.0-多入多出三层-多变量非线性分类.md index 2d2947d3..a5ec66cb 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.0-多入多出三层-多变量非线性分类.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.0-多入多出三层-多变量非线性分类.md @@ -11,6 +11,8 @@ +图12-1 + 由于这是从欧美国家和地区收集的数据,从图中可以看出有几点和中国人的手写习惯不一样: - 数字2,下面多一个圈 @@ -54,7 +56,7 @@ def NormalizeData(X): 我们使用了不一样的归一化数据处理方法,这是为什么呢? |样本序号|1|2|3|4|...|60000| -|---|---|----|---|--|--|--| +|---|---|---|---|---|---|---| |点1|0|0|0|0|...|0| |点2|0|0|12|0|...|59| |点3|0|0|56|253|...|98| diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.1-三层神经网络的实现.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.1-三层神经网络的实现.md index b2b3a774..7560a917 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.1-三层神经网络的实现.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.1-三层神经网络的实现.md @@ -7,6 +7,8 @@ +图12-2 + ### 输入层 28x28=784个特征值: @@ -288,6 +290,8 @@ if __name__ == '__main__': +图12-3 + 打印输出部分: ``` diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.2-手工测试训练效果.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.2-手工测试训练效果.md index fe56257d..9712f31b 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.2-手工测试训练效果.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.2-手工测试训练效果.md @@ -64,6 +64,8 @@ def Inference(img_array): +图12-4 + 这是一个方形的空面板,坐标为[0,1],但实际上它的初始尺寸是640x480,在使用之前,我们先把它拉成一个正方形(宽高大致近似即可),因为在训练时,我们使用的训练集是28x28的正方形,所以要求推理用的数据也是正方形的。 然后需要在这个面板上注册事件,以响应鼠标和键盘输入: @@ -99,10 +101,14 @@ def Inference(img_array): +图12-5 + 此时会看到左侧console窗口中会显示一些辅助信息,如鼠标按下和释放的坐标。写完后,按回车键,触发数据处理和推理过程: +图12-6 + 数据处理过程: 1. 应用程序会先把绘图区域保存为一个文件 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.3-梯度检查.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.3-梯度检查.md index 3540913e..528bc690 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.3-梯度检查.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.3-梯度检查.md @@ -32,6 +32,8 @@ def numerical_diff(f, x): +图12-7 + 红色实线为真实的导数切线,蓝色虚线是上述方法的体现,即从x到x+h画一条直线,来模拟真实导数。但是可以明显看出红色实线和蓝色虚线的斜率是不等的。因此我们通常用绿色的虚线来模拟真实导数,公式变为: $$ diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.4-学习率与批大小.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.4-学习率与批大小.md index 40c5b2d8..a6a39650 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.4-学习率与批大小.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step5 - NonLinearClassification/12.4-学习率与批大小.md @@ -63,6 +63,8 @@ $$\sum_{k=1}^\infty \eta^2_k < \infty \tag{3}$$ +图12-8 + - 黄色:学习率太大,loss值增高,网络发散 - 红色:学习率可以使网络收敛,但值较大,开始时loss值下降很快,但到达极值点附近时,在最优解附近来回跳跃 - 绿色:正确的学习率设置 @@ -101,6 +103,8 @@ $$当前学习率+步长 \rightarrow 下一个学习率$$ +图12-9 + 横坐标用了np.log10()函数来显示对数值,所以横坐标与学习率的对应关系是: |横坐标|-1.0|-0.8|-0.6|-0.4|-0.2|0.0| @@ -111,10 +115,14 @@ $$当前学习率+步长 \rightarrow 下一个学习率$$ +图12-10 + 到-0.13时(对应学习率0.74)开始,损失值上升,所以合理的初始学习率应该是0.7左右,于是我们再次把范围缩小的0.6,0.7,0.8去做试验: +图12-11 + 最后得到的最佳初始学习率是0.8左右。由于loss值是渐渐从下降变为上升的,前面有一个积累的过程,如果想避免由于前几轮迭代带来的影响,可以使用比0.8小一些的数值,比如0.75作为初始学习率。 ### 12.4.3 学习率的后期修正 @@ -123,6 +131,8 @@ $$当前学习率+步长 \rightarrow 下一个学习率$$ +图12-12 + 学习率为0.5时效果最好,虽然0.8的学习率开始时上升得很快,但是到了10个epoch时,0.5的曲线就超上来了,最后稳定在0.8的曲线之上。 这就给了我们一个提示:可以在开始时,把学习率设置大一些,让准确率快速上升,损失值快速下降;到了一定阶段后,可以换用小一些的学习率继续训练。用公式表示: @@ -145,6 +155,8 @@ $$lr = 0.1 * 0.9^{GlobalSteps/50}$$ +图12-13 + 如果计算一下每50轮的衰减的具体数值,可以列表如下: |迭代|0|50|100|150|200|250|300|...| @@ -157,6 +169,8 @@ $$lr = 0.1 * 0.9^{GlobalSteps/50}$$ +图12-14 + #### fixed 使用固定的学习率,比如全程都用0.1。要注意的是,这个值不能大,否则在后期接近极值点时不易收敛。 @@ -201,10 +215,14 @@ p=1时,为线性下降;p>1时,下降趋势向上突起;p<1时,下降 +图12-15 + 难道0.5是一个全局最佳学习率吗?别着急,继续降低批大小到16时,再观察准确率曲线。由于批大小缩小了一倍,所以要完成相同的epoch时,下图中的迭代次数会是上图中的两倍: +图12-16 + 这次有了明显变化,一下子变成了0.1的学习率最好,这说明当批大小小到一定数量级后,学习率要和批大小匹配,较大的学习率配和较大的批量,反之亦然。 #### 原因解释 @@ -227,6 +245,8 @@ p=1时,为线性下降;p>1时,下降趋势向上突起;p<1时,下降 +图12-17 + 先看左图:假设有三个蓝色样本点,正确的拟合直线如绿色直线所示,但是目前的拟合结果是红色直线,其斜率为0.5。我们来计算一下它的损失函数值,假设虚线组成的网格的单位值为1。 $$loss = {1 \over 2m} \sum_i^m (z-y)^2 = (1^2 + 0^2 + 1^2)/2/3=0.333$$ diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.1-初步认识循环神经网络.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.1-初步认识循环神经网络.md index e9e2a86d..e85cf38b 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.1-初步认识循环神经网络.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.1-初步认识循环神经网络.md @@ -11,13 +11,13 @@ 假设有一个随机信号发射器,每秒产生一个随机信号,随机值为(0,1)之间。信号发出后,碰到一面墙壁反射回来,来回的时间相加正好是1秒,于是接收器就收到了1秒钟之前的信号。对于接收端来说,接收到的数据序列如表19-1: +表19-1 每一时刻的发射信号和回波信号 + |时刻|t1|t2|t3|t4|t5|t6|...| |---|---|---|---|---|---|---|---| |发射随机信号X|0.35|0.46|0.12|0.69|0.24|0.94|...| |接收回波信号Y|0|0.35|0.46|0.12|0.69|0.24|...| -表19-1 每一时刻的发射信号和回波信号 - 具体的描述此问题:当接收端接收到两个连续的值,如0.35、0.46时,系统响应为0.35;下一个时间点接收到了0.12,考虑到上一个时间点的0.46,则二者组合成0.46、0.12序列,此时系统响应为0.46;依此类推,即接收到第二个数值时,总要返回相邻的第一个数值。 我们可以把发射信号看作X,把接收信号看作是Y,则此问题变成了给定样本X和标签值Y,训练一个神经网络,令其当接收到两个序列的值时,总返回第一个值。 @@ -60,6 +60,8 @@ def echo(x1,x2): 所以,在本问题中,样本数据如表19-2所示: +表19-2 样本数据形状 + |样本|特征值|标签值| |---|---|---| |0|0.35|0| @@ -70,7 +72,6 @@ def echo(x1,x2): |5|0.94|0.24| |...|...|...| -表19-2 样本数据形状 ### 19.1.3 用前馈神经网络的知识来解决问题 @@ -90,6 +91,8 @@ def echo(x1,x2): 图19-8中含有两个简单的前馈神经网络,t1和t2,每个节点上都只有一个神经元,其中,各个节点的名称和含义如表19-3所示: +表19-3 图19-8中的各个节点的名称和含义 + |名称|含义|在t1,t2上的取值| |---|---|---| |x|输入层样本|根据样本值| @@ -104,8 +107,6 @@ def echo(x1,x2): |loss|损失函数|函数形式相同| |y|标签值|根据标签值| -表19-3 图19-8中的各个节点的名称和含义 - 由于是一个拟合值的网络,相当于线性/非线性回归,所以在输出层不使用分类函数,损失函数使用均方差。在这个具体的问题中,t2的标签值y应该和t1的样本值x相同。 请读者注意,在很多关于循环神经网络的文字资料中,通常把h和s合并在一起。在这里我们把它们分开画,便于后面的反向传播的推导和理解。 @@ -329,7 +330,7 @@ class net(object): -图19-9:损失函数值和准确度的历史记录曲线 +图19-9 损失函数值和准确度的历史记录曲线 从图19-9的训练过程看,网络收敛情况比较理想。由于使用单样本训练,所以训练集的损失函数变化曲线和准确度变化曲线计算不准确,所以在图中没有画出,下同。 @@ -361,7 +362,7 @@ V=[[0.50609376]], bz=[[0.53271514]], W=[[-4.39099762]] ``` -可以看到W的值比其他值大出一个数量级,这就意味着在t2上的输出主要来自于t1的样本输入,这也符合我们的预期,即:接收到两个序列的数值时,返回第一个序列的数值。 +可以看到W的值比其他值大出一个数量级,对照图19-8理解,这就意味着在t2上的输出主要来自于t1的样本输入,这也符合我们的预期,即:接收到两个序列的数值时,返回第一个序列的数值。 至此,我们解决了本章开始时提出的问题。注意,我们没有使用到RNN的任何概念,而是完全通过以前学习到的DNN的概念来做正向和反向推导。但是通过t1、t2两个时序的衔接,我们已经可以体会到RNN的妙处了,后面我们会用它来解决更复杂的问题。 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.2-二分类循环神经网络.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.2-二分类循环神经网络.md index 403b2e7a..d43c83f3 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.2-二分类循环神经网络.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.2-二分类循环神经网络.md @@ -38,6 +38,8 @@ 所以,仍以13-6=7为例,单个样本如表19-4所示: +表19-4 以13-6=7为例的单个样本二维数组 + |时间步|特征值1|特征值2|标签值| |---|---|---|---| |1|1|0|1| @@ -45,9 +47,7 @@ |3|1|1|1| |4|1|0|0| -表19-4 以13-6=7为例的单个样本二维数组 - -为了和图19-11保持一致,我们令时间步从1开始,但实际上在运算时是从0开始的。特征值1从下向上看是[1101],即十进制13;特征值2从下向上看是[0110],即十进制6;标签值从下向上看是[0111],即十进制6。 +为了和图19-11保持一致,我们令时间步从1开始(但编程时是从0开始的)。特征值1从下向上看是[1101],即十进制13;特征值2从下向上看是[0110],即十进制6;标签值从下向上看是[0111],即十进制6。 所以,单个样本是一个二维数组,而多个样本就是三维数组,第一维是样本,第二维是时间步,第三维是特征值。 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.3-通用的循环神经网络模型.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.3-通用的循环神经网络模型.md index 3d905e7d..aa8357db 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.3-通用的循环神经网络模型.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.3-通用的循环神经网络模型.md @@ -7,6 +7,8 @@ 在19.1节和19.2节的情况不同,都是预知时间步长度,然后以纯手工方式搭建循环神经网络。表19-5展示了前两节和后面的章节要实现的循环神经网络参数: +表19-5 不同场景下的循环神经网络参数 + ||回波检测问题|二进制减法问题|PM2.5预测问题| |---|---|---|---| |时间步|2|4|用户指定| @@ -17,8 +19,6 @@ |批大小|1|1|用户指定| |有无偏移值|有|无|有| -表19-5 不同场景下的循环神经网络参数 - 如果后面再遇到多分类情况,或者其它参数有变化的话,我们不能像19.1节和19.2节那样纯手写代码,而是要抽象出来,写一个比较通用的框架。 “比较通用”是什么意思呢?那就是应该满足以下条件: diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.4-空气质量预测.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.4-空气质量预测.md index 677787a0..49eb217d 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.4-空气质量预测.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.4-空气质量预测.md @@ -129,6 +129,8 @@ No. 年 月 日 时 污染 露点 温 气压 风向 风速 雪 预测,可以是预测PM2.5的具体数值,也可以是预测空气质量的好坏程度,按照标准,我们可以把PM2.5的数值分为以下6个级别,如表19-7所示: +表19-7 PM2.5数值及级别对应 + |级别|数值| |---|---| |0|0~50| @@ -138,8 +140,6 @@ No. 年 月 日 时 污染 露点 温 气压 风向 风速 雪 |4|200~300| |5|300以上| -表19-7 PM2.5数值及级别对应 - 如果预测具体数值,则是个回归网络,需要在最后一个时间步上用线性网络,后接一个均方差损失函数;如果预测污染级别,则是个分类网络,需要在最后一个时间步上用Softmax做6分类,后接一个交叉熵损失函数。 由于我们在19.3节实现了一个“通用的循环神经网络”,所以这些细节就可以不考虑了,只需要指定网络类型为NetType.Fitting或者NetType.MultipleClassifier即可。 @@ -241,34 +241,18 @@ if __name__=='__main__': 图19-16 训练过程中的损失函数值和准确度的变化 -然后分别预测了未来8、4、2、1小时的污染程度,并截取了中间一小段数据来展示预测效果,如图19-17、图19-18、图19-19、图19-20所示: +然后分别预测了未来8、4、2、1小时的污染程度,并截取了中间一小段数据来展示预测效果,如表19-8所示: - +表19-8 预测时长与准确度的关系 -图19-17 预测8小时的污染程度 +|预测时长|损失函数值与准确率|分类效果图| +|---|---|---| +|8小时|1.178819
0.601980|| +|4小时|0.944813
0.655847|| +|2小时|0.800045
0.713743|| +|1小时|0.713512
0.755755|| - - -图19-18 预测4小时的污染程度 - - - -图19-19 预测2小时的污染程度 - - - -图19-20 预测1小时的污染程度 - -从上面的4张图的直观比较可以看出来,预测时间越短的越准确;从下面的打印输出可以得到数字化的准确度值: - -``` -pred_step=8, loss=1.178819, acc=0.601980 -pred_step=4, loss=0.944813, acc=0.655847 -pred_step=2, loss=0.800045, acc=0.713743 -pred_step=1, loss=0.713512, acc=0.755755 -``` - -预测8小时候的污染数据的准确度只有60%,而预测1小时的准确度可以达到75%。如果我们把max_epoch的数值改大,多训练几步,是否可以得到更好的效果呢?笔者实验过max_epoch=100的情况,结果并没有好多少。 +从上面的4张图的直观比较可以看出来,预测时间越短的越准确。预测8小时候的污染数据的准确度只有60%,而预测1小时的准确度可以达到75%。如果我们把max_epoch的数值改大,多训练几步,是否可以得到更好的效果呢?笔者实验过max_epoch=100的情况,结果并没有好多少。 ### 19.3.4 训练一个回归预测网络 @@ -278,40 +262,24 @@ pred_step=1, loss=0.713512, acc=0.755755 net_type = NetType.Fitting ``` -图19-21显示了训练过程,一开始变化得很快,然后变得很平缓: +图19-17显示了训练过程,一开始变化得很快,然后变得很平缓: -图19-21 训练过程中的损失函数值和准确度的变化 +图19-17 训练过程中的损失函数值和准确度的变化 -然后分别预测了未来8、4、2、1小时的污染数值,并截取了中间一小段数据来展示预测效果,如图19-22、图19-23、图19-24、图19-25所示: +然后分别预测了未来8、4、2、1小时的污染数值,并截取了中间一小段数据来展示预测效果,如表19-9所示: - +表19-9 预测时长与准确度的关系 -图19-22 预测8小时的污染数值 +|预测时长|损失函数值与准确率|拟合效果图| +|---|---|---| +|8小时|0.001239
0.722895|| +|4小时|0.000669
0.850332|| +|2小时|0.000388
0.913302|| +|1小时|0.000242
0.945949|| - - -图19-23 预测4小时的污染数值 - - - -图19-24 预测2小时的污染数值 - - - -图19-25 预测1小时的污染数值 - -从上面的4张图的直观比较可以看出来,预测时间越短的越准确;从下面的打印输出可以得到数字化的准确度值: - -``` -pred_step=8, loss=0.001239, acc=0.722895 -pred_step=4, loss=0.000669, acc=0.850332 -pred_step=2, loss=0.000388, acc=0.913302 -pred_step=1, loss=0.000242, acc=0.945949 -``` - -预测8小时候的污染数据的准确度是72%,而预测1小时的准确度可以达到94%。 +从上面的4张图的直观比较可以看出来,预测时间越短的越准确,预测8小时候的污染数据的准确度是72%,而预测1小时的准确度可以达到94%。 ### 19.3.5 几个预测时要注意的问题 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.5-不定长时序的RNN.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.5-不定长时序的RNN.md index 0a4a9e86..c10dfc0f 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.5-不定长时序的RNN.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.5-不定长时序的RNN.md @@ -1,11 +1,11 @@ -## 19.3 不定长时序的RNN +## 19.5 不定长时序的RNN 本小节中,我们将学习具有不固定的时间步的RNN网络,用于多分类功能。 -### 19.3.1 提出问题 +### 19.5.1 提出问题 各个国家的人都有自己习惯的一些名字,下面列举出了6个国家/语种的典型名字: @@ -32,7 +32,7 @@ Hitomi Japanese 下面我们仍然借助于RNN来完成这个任务。 -### 19.3.2 准备数据 +### 19.5.2 准备数据 循环神经网络的要点是“循环”二字,也就是说一个样本中的数据要分成连续若干个时间步,然后逐个喂给网络进行训练。如果两个样本的时间步总数不同,是不能做为一个批量一起喂给网络的。 @@ -55,27 +55,27 @@ Hitomi Japanese 在用SGD方法训练时,先随机选择一个组,假设是6个字母的名字,再从这一组中随机选择一个小批量,比如8个名字,这样就形成了一个8x6x26的三维批量数据。如果随机选到了7个字母的组,最后会形成8x7x26的三维批量数据。 -### 19.3.3 搭建不定长时序的网络 +### 19.5.3 搭建不定长时序的网络 #### 搭建网络 为什么是不定长时序的网络呢?因为名字的单词中的字母个数不是固定的,最少的两个字母,最多的有19个字母。 -
+ -图一:不定长时序的网络 -
+图19-18 不定长时序的网络 + 在图一中,max_n=19,可以容纳最长的单词。为了节省空间,把最后一个时序的y和loss画在了拐弯的位置。 并不是所有的时序都需要做分类输出,而是只有最后一个时序需要。比如当名字是“guan”时,需要在第4个时序做分类输出,并加监督信号做反向传播,而前面3个时序不需要。但是当名字是“baevsky”时,需要在第7个时序做分类输出。所以n值并不是固定的。 对于最后一个序列,展开成DNN网络如图二: -
+ -图二:某个名字的最后一个时序的展开图
+图19-19 某个名字的最后一个时序的展开图 图二中,n为当前名字的长度,即字母个数,也就是时序数;h为4~8之间的一个数,表示隐层神经元的个数;c为最后的分类数,此处为6,即6种语言;最后输出为预测该名字属于6种语言的概率。 @@ -219,7 +219,7 @@ $$ 参数中,isFirst为True时表示是第一个时序,isLast为True时表示最后一个时序。 -### 19.3.4 代码实现 +### 19.5.4 代码实现 在主过程调用代码中,我们主要讲解几个核心函数。下面是前向计算的调用函数: @@ -313,7 +313,7 @@ $$ 在检测损失函数值时,要和历史记录比较,如果本epoch的损失函数值更小,则记录下来,并保存当前的网络参数。也就是说,在磁盘中保存的参数,是整个训练过程中的最优解。 -### 19.3.5 运行结果 +### 19.5.5 运行结果 我们需要下面一组超参来控制模型训练: @@ -331,35 +331,29 @@ $$ 1. 学习率为0.005,经过笔者试验,大一些的学习率比如0.01,会造成网络不收敛,损失函数高居不下 2. 隐层神经元数量为8,虽然输入的x的特征值向量数为26,但却是OneHot编码,有效信息很少,所以不需要很多的神经元数量 -最后得到的损失函数曲线如图三所示: +最后得到的损失函数曲线如图19-20所示: -
-图三:损失函数曲线和验证集准确度曲线 -
+图10-20 训练过程中的损失函数值和准确度的变化 + 由于是多分类问题,所以我们尝试使用混淆矩阵的方式来分析结果: -
+ -图四:混淆矩阵 -
+图19-21 混淆矩阵 在图四中,对角线上的方块越亮,表示识别越准确。对于Chinese,被识别为Chinese和English类别的数量差不多,也就是说很多中文名字被识别成了英语,这与英语名字的数量多有关系。 我们再来看另一张图: -
-图五:准确率较低的混淆矩阵 -
+图19-22 准确率较低的混淆矩阵 -``` - -在图五中,French和German很不理想,于是笔者把这两者的数据样本重复了一份放在训练数据集里,重新训练从而得到了图四,可以起到一些作用,German的结果正常了,French的结果还差一些,但可以看到图四中的French:French的方块的亮度,比图五的对应位置的方块的亮度要高很多。 +在图19-22中,French和German很不理想,于是笔者把这两者的数据样本重复了一份放在训练数据集里,重新训练从而得到了图四,可以起到一些作用,German的结果正常了,French的结果还差一些,但可以看到图四中的French:French的方块的亮度,比图五的对应位置的方块的亮度要高很多。 ... 183:403696:0.0005 loss=0.647325, acc=0.737000 @@ -380,7 +374,7 @@ correctness=6458/8759=0.7372987783993606 ### 代码位置 -ch19, Level3 +ch19, Level5 ### 参考资料 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.6-深度循环神经网络.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.6-深度循环神经网络.md index 517499a0..05b25244 100644 --- a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.6-深度循环神经网络.md +++ b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.6-深度循环神经网络.md @@ -1,88 +1,132 @@ -## 19.4 深度循环神经网络 +## 19.6 深度循环神经网络 -前面的几个例子中,单独看每一时刻的网络结构,其实都是由“输入层->隐层->输出层”所组成的,这与我们在DNN中学到的单隐层的知识一样,由于输入层不算做网络的一层,输出层是必须具备的,所以网络只有一个隐层。我们知道单隐层的能力是有限的,所以人们会在DNN中使用更深(更多隐层)的网络来解决复杂的问题。 +### 19.6.1 深度循环神经网络的结构图 -在RNN中,会有同样的需求,要求每一时刻的网络是由多个隐层组成。比如下图为两个隐层的循环神经网络,用于解决和19.3节中的同样的问题: +前面的几个例子中,单独看每一时刻的网络结构,其实都是由“输入层->隐层->输出层”所组成的,这与我们在前馈神经网络中学到的单隐层的知识一样,由于输入层不算做网络的一层,输出层是必须具备的,所以网络只有一个隐层。我们知道单隐层的能力是有限的,所以人们会使用更深(更多隐层)的网络来解决复杂的问题。 + +在循环神经网络中,会有同样的需求,要求每一时刻的网络是由多个隐层组成。比如下图为两个隐层的循环神经网络,用于解决和19.4节中的同样的问题: -图一: +图19-23 注意图一中最左侧的两个隐藏状态s1和s2是同时展开为右侧的图的, 这样的循环神经网络称为深度循环神经网络,它可以具备比单隐层的“简单”循环神经网络更强大的能力。 +### 19.6.2 正向计算 +#### 公式推导 -正向计算 - - -对第一个时间步: +对于第一个时间步: $$ -h_1 = x \cdot U \tag{1} +h1 = x \cdot U \tag{1} $$ $$ -s_1 = tanh(h_1) \tag{2} -$$ -$$ -h_2 = s_1 \cdot Q \tag{3} -$$ -$$ -s_2 = tanh(h_2) \tag{4} +h2 = s1 \cdot Q \tag{2} $$ -对后面的时间步: +对于后面的时间步: $$ -h_1 = x \cdot U + s_{1} \cdot W_1 \tag{5} +h1 = x \cdot U + s1_{t-1} \cdot W1 \tag{3} $$ $$ -h_2 = s_1 \cdot Q + s_{2} \cdot W_2 \tag{6} +h2 = s1 \cdot Q + s2_{t-1} \cdot W2 \tag{4} +$$ + +对于所有的时间步: + +$$ +s1 = Tanh(h1) \tag{5} +$$ + +$$ +s2 = Tanh(h2) \tag{6} $$ 对于最后一个时间步: $$ -z = s_2 \cdot V \tag{7} +z = s2 \cdot V \tag{7} $$ $$ -a = Softmax(z) \tag{8} +a = Identity(z) \tag{8} $$ $$ -loss = -y \cdot \ln a \tag{9} +J = loss_{\tau} = \frac{1}{2} (a-y)^2 \tag{9} $$ -注意并不是所有的循环神经网络都只在最后一个时间步有监督学习信号(计算loss值),而是我们这个问题只需要这样。在19.2节中的例子就是需要在每一个时间步都要计算loss值的。 +由于是拟合任务,所以公式8的Identity()函数只是简单地令a=z,以便统一编程接口,最后用均方差做为损失函数。 -反向传播 +注意并不是所有的循环神经网络都只在最后一个时间步有监督学习信号,而只是我们这个问题需要这样。在19.2节中的例子就是需要在每一个时间步都要有输出并计算损失函数值的。所以,公式9中只计算了最后一个时间步的损失函数值,做为整体的损失函数值。 + +#### 代码实现 + +注意前向计算时需要把prev_s1和prev_s2传入,即上一个时间步的两个隐层的节点值(矩阵)。 + +```Python +class timestep(object): + def forward(self, x, U, V, Q, W1, W2, prev_s1, prev_s2, isFirst, isLast): + ...... + # level 1 + if (isFirst): + # 公式1 + self.h1 = np.dot(x, U) + else: + # 公式5 + self.h1 = np.dot(x, U) + np.dot(prev_s1, W1) + # 公式2 + self.s1 = Tanh().forward(self.h1) + + # level 2 + if (isFirst): + # 公式3 + self.h2 = np.dot(self.s1, self.Q) + else: + # 公式6 + self.h2 = np.dot(self.s1, self.Q) + np.dot(prev_s2, W2) + # 公式4 + self.s2 = Tanh().forward(self.h2) + + if (isLast): + # 公式7 + self.z = np.dot(self.s2, V) + # 公式8 + self.a = self.z +``` + +### 19.6.3 反向传播 + +#### 公式推导 反向传播部分和前面章节的内容大致相似,我们只把几个关键步骤直接列出来,不做具体推导: 对于所有时间步: $$ -\frac{\partial loss}{\partial Q}=s_1^T \cdot dh_2 \rightarrow dQ \tag{10} +\frac{\partial J}{\partial Q}=s1^T \cdot dh2 \rightarrow dQ \tag{10} $$ $$ -\frac{\partial loss}{\partial U}=x^T \cdot dh_1 \rightarrow dU \tag{11} +\frac{\partial J}{\partial U}=x^T \cdot dh1 \rightarrow dU \tag{11} $$ 对于最后一个时间步: $$ -\frac{\partial loss}{\partial z} = a-y \rightarrow dz \tag{12} +\frac{\partial J}{\partial z} = a-y \rightarrow dz \tag{12} $$ $$ -\frac{\partial loss}{\partial h_2} = (dz \cdot V^T) \odot \sigma'(s_2) \rightarrow dh_2 \tag{13} +\frac{\partial J}{\partial h2} = (dz \cdot V^T) \odot \sigma'(s2) \rightarrow dh2 \tag{13} $$ $$ -\frac{\partial loss}{\partial V}=s_2 \cdot dz \rightarrow dV \tag{14} +\frac{\partial J}{\partial V}=s2 \cdot dz \rightarrow dV \tag{14} $$ $$ -\frac{\partial loss}{\partial h_1} = (dh_2 \cdot Q^T) \odot \sigma'(s_1) \rightarrow dh_1 \tag{15} +\frac{\partial J}{\partial h1} = (dh2 \cdot Q^T) \odot \sigma'(s1) \rightarrow dh1 \tag{15} $$ 对于其他时间步: @@ -92,7 +136,7 @@ dz = 0 \tag{16} $$ $$ -\frac{\partial loss}{\partial h_2} = (dh_{2} \cdot W_2^T) \odot \sigma'(s_2) \rightarrow dh_2 \tag{17} +\frac{\partial J}{\partial h2} = (dh2_{t+1} \cdot W2^T) \odot \sigma'(s2) \rightarrow dh2 \tag{17} $$ $$ @@ -100,64 +144,141 @@ dV = 0 \tag{18} $$ $$ -\frac{\partial loss}{\partial h_1} = (dh_{1} \cdot W_1^T) \odot \sigma'(s_1) \rightarrow dh_1 \tag{19} +\frac{\partial J}{\partial h1} = (dh1_{t+1} \cdot W1^T) \odot \sigma'(s1) \rightarrow dh1 \tag{19} $$ 对于第一个时间步: $$ -dW_1 = 0, dW_2 = 0 \tag{20} +dW1 = 0, dW2 = 0 \tag{20} $$ 对于其他时间步: $$ -\frac{\partial loss}{\partial W_1}=s^T_{1} \cdot dh_1 \rightarrow dW_1 \tag{21} +\frac{\partial J}{\partial W1}=s1^T_{t-1} \cdot dh_1 \rightarrow dW1 \tag{21} $$ $$ -\frac{\partial loss}{\partial W_2}=s^T_{2} \cdot dh_2 \rightarrow dW_2 \tag{22} +\frac{\partial J}{\partial W2}=s2^T_{t-1} \cdot dh2 \rightarrow dW2 \tag{22} $$ +#### 代码实现 + +```Python +class timestep(object): + def backward(self, y, prev_s1, prev_s2, next_dh1, next_dh2, isFirst, isLast): + if (isLast): + # 公式12 + self.dz = (self.a - y) + else: + # 公式16 + self.dz = np.zeros_like(y) + # end if + + if (isLast): + # 公式13 + self.dh2 = np.dot(self.dz, self.V.T) * Tanh().backward(self.s2) + else: + # 公式17 + self.dh2 = np.dot(next_dh2, self.W2.T) * Tanh().backward(self.s2) + # end if + + if (isLast): + # 公式14 + self.dV = np.dot(self.s2.T, self.dz) + else: + # 公式18 + self.dV = np.zeros_like(self.V) + + # 公式10 + self.dQ = np.dot(self.s1.T, self.dh2) + + if (isLast): + # 公式15 + self.dh1 = np.dot(self.dh2, self.Q.T) * Tanh().backward(self.s1) + else: + # 公式19 + self.dh1 = np.dot(next_dh1, self.W1.T) * Tanh().backward(self.s1) + + # 公式11 + self.dU = np.dot(self.x.T, self.dh1) + + if (isFirst): + # 公式20 + self.dW1 = np.zeros_like(self.W1) + self.dW2 = np.zeros_like(self.W2) + else: + # 公式21,22 + self.dW1 = np.dot(prev_s1.T, self.dh1) + self.dW2 = np.dot(prev_s2.T, self.dh2) + # end if +``` + +### 19.6.4 运行结果 + +#### 超参设置 + +我们搭建一个双隐层的循环神经网络,隐层1的神经元数为3,隐层2的神经元数为2,其它参数保持与单隐层的循环神经网络一致: +- 网络类型:回归 +- 时间步数:48 +- 学习率:0.1 +- 最大迭代数:200 +- 批大小:64 +- 输入特征数:6 +- 输出维度:1 + +#### 训练结果 + +训练过程如图19-24所示,训练结果如表19-10所示: - +图19-24 训练过程中的损失函数值和准确度的变化 -参数量计算 +表19-10 预测时长与准确度的关系 -对于19.3节中的单层RNN,参数配置如下: - -|参数|尺寸|数量| +|预测时长|损失函数值与准确度|拟合结果| |---|---|---| -|U|26x8|208| -|V|8x6|48| -|W|8x8|64| -|Total||320| +|8|0.001225
0.725709| +|4|0.000668
0.850514| +|2|0.000386
0.913654| +|1|0.000240
0.946374| -对于两层的RNN来说,参数配置如下: +#### 与单层循环神经网络的比较 -|参数|尺寸|数量| -|---|---|---| -|U|26x6|156| -|Q|6x6|36| -|V|6x6|36| -|W1|6x6|36| -|W2|6x6|36| -|Total||300| - -通过上面两张表的比较,可以看出,单层RNN的参数总量为320个,双层RNN(代表了深度RNN)的参数总量为156个,只有前者的一半,但是可以达到同样的效果,甚至更好的效果。 +对于19.3节中的单层循环神经网络,参数配置如下: +``` +U: 6x4=24 +V: 4x1= 4 +W: 4x4=16 +--------- +Total: 44 +``` +对于两层的循环神经网络来说,参数配置如下: ``` -... -198:219099:0.0005 loss=0.914243, acc=0.633000 -199:220200:0.0005 loss=0.906956, acc=0.637000 -save last parameters... -correctness=6295/8759=0.7186893480990981 +U: 6x3=18 +Q: 3x2= 6 +V: 2x1= 2 +W1:3x3= 9 +W2:2x2= 4 +--------- +Total: 39 ``` +表19-11 预测8个时间步的结果比较 + +||单层循环神经网络|双层循环神经网络| +|---|---|---| +|损失函数值|0.001432|0.001225| +|准确度值|0.679348|0.725709| +|参数个数|44|39| + +从表19-11可以看到,双层的循环神经网络在参数少的情况下,取得了比单层循环神经网络好的效果。 + ### 代码位置 -ch19, Level4 +ch19, Level6 diff --git a/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.5-双向循环神经网络.md b/B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.7-双向循环神经网络.md similarity index 100% rename from B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.5-双向循环神经网络.md rename to B-教学案例与实践/B6-神经网络基本原理简明教程/Step9 - RNN/19.7-双向循环神经网络.md