發表文章

目前顯示的是有「PyTorch」標籤的文章

透過單方向LSTM進行短時間的交通流量預測_part2.建構資料集並進行訓練_RMSE,MAE,MAPE指標模型訓練效果可視化

圖片
  程式碼 import numpy as np import time import math import torch import torch.utils.data as Data import matplotlib.pyplot as plt #引入sklearn現成的損失函數MSE(均方誤差),MAE(平均絕對誤差) #MSE(均方誤差):預測值減真實值後再平分取平均 #MAE(平均絕對誤差):預測值減真實值取絕對值後再取平均 from sklearn.metrics import mean_squared_error as mse,mean_absolute_error as mae from torch import nn #把第一階段資料讀取處理放在另一個.py檔案引入 from trafficflow_readdata import X_train, X_test, y_train, y_test device = torch . device( "cuda:0" if torch . cuda . is_available() else "cpu" ) print (device) #透過torch.utils.data建構模型訓練需要的訓練集物件 train_dataset = Data . TensorDataset(torch . Tensor(X_train),torch . Tensor(y_train)) #將測試集轉為張量 X_test = torch . Tensor(X_test) #用torch.utils.data建構數據產生器,按批次生成訓練數據 batch_size = 128 train_loader = Data . DataLoader(dataset = train_dataset, batch_size = batch_size, shuffle = True , #是否要隨機打亂數據 num_worker...

透過單方向LSTM進行短時間的交通流量預測_part1.資料預處理和EDA特徵挑選(使用PEMS04資料集)

圖片
這邊會用PEMS04資料集做交通流量預測的測試(以下提供3個資料集下載連結) https://www.kaggle.com/datasets/wenkeda/pems04 https://zenodo.org/records/7816008 https://github.com/Davidham3/ASTGCN-2019-mxnet/tree/master/data/PEMS04 https://github.com/Davidham3/ASTGCN-2019-mxnet/blob/master/data/README.md Each npz file contains one key, named "data", the shape is (sequence_length, num_of_vertices, num_of_features). 數據集來源於PeMS網站,包含了三藩市灣區(美國加尼福尼亞州三藩市大灣區)29條高速公路上的3848個探測器在2018年1月1日至2018年2月28日期間的數據。 這些探測器每5分鐘收集一次數據,記錄了3848個感測器每5分鐘經過的車輛數。 Performance Measurement System (PeMS) Data Source https://dot.ca.gov/programs/traffic-operations/mpr/pems-source https://pems.dot.ca.gov/ 地圖上顯示的交通數據是從 39,000 多個單獨的檢測器中即時收集的。這些感測器覆蓋加利福尼亞州所有主要大都市地區的高速公路系統。 在這篇文獻 Problem: Road Trajectory Prediction 有介紹到該數據集維度 浙江大学学报(工学版)這篇文獻也可供參考 Traffic flow prediction model based on spatio-temporal graph convolution with multi-information fusion 探測器節點數: 307 特徵數(每個探測器每次採集的數據有3個維度特徵): 3 數據時長: 59天 時間視窗: 5分鐘 可登入Kaggle後下載資料集 Processing traffic data for deep ...

深度學習_(時間)序列模型筆記(LSTM)_LSTM的三道門_改善RNN處理序列模型存在的缺陷

圖片
  RNN處理序列模型存在的缺陷 1.長距離依賴(long term dependencies)問題: RNN模型藉由隱藏資訊進行傳遞,較早時間步的隱藏資訊,透過時間步傳遞,會逐漸消失且無法幫助預測。 比方預測一句話下一個可能出現的單詞 臺北是台灣的.....   首都 這很容易聯想預測,因為句子還滿簡短的 2.短距離無用資訊: RNN在距離較近的時間步中保存的隱藏資訊較多,也會存到無用資訊。 用上面句子來舉例,該句中"的"對預測無幫助意義,可視為停頓詞,但和預測單詞距離鄰近。 https://medium.com/data-science-data-engineering/time-series-prediction-lstm-bi-lstm-gru-99334fc16d75 長短期記憶LSTM(Long Short-Term Memory) 也是一種RNN,算是改良版。 專門用於規避梯度消失和爆炸等問題。 可避免長期依賴問題 更可避免短期無用資訊。 LSTM 不像傳統RNN那樣只有單個 tanh 層,而是包含四個內部通訊的互動層。 LSTM會透過細胞狀態貫穿整個序列,可更好對資訊做更好分析處理。 LSTM使用門"Gate"控機制來控制如何擦除記憶並同時寫入新的記憶,分別有如下幾種門: 遺忘門(Forget Gate) 輸入門(Input Gate) 輸出門(Output Gate) 上述示意圖圖對應圖標含意 LSTM中所謂的"門"其實是一種讓資訊選擇式通過的方法(可去除或增加資訊到細胞狀態) 通常門會包含一個sigmoid神經網路層和一個pointwise乘法操作 Sigmoid層輸出0~1之間的數值,主要用來描述每個部份有多少量可通過。 (比方0就表示不允許任何量通過,1就表示允許任意量通過。它可以用來決定忘記或記住資訊。) LSTM的三道門如下依序介紹門控機制 LSTM的核心內容就是Ct 1.遺忘門: "細胞"中要丟掉捨麼訊息,都由遺忘門來處理。 該層讀取當前輸入x跟前一個神經元資訊h,由ft來決定丟棄的資訊。 輸出結果1表示"完全保留",0表示"完全捨棄"。 h t-1 :上一個LSTM單元的輸出 σ:Sigmoid層 2.輸入門: 細胞...