日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

深度学习-Tensorflow2.2-RNN循环神经网络{11}-RNN空气污染预测-26

發布時間:2024/9/15 循环神经网络 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习-Tensorflow2.2-RNN循环神经网络{11}-RNN空气污染预测-26 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.



import tensorflow as tf import matplotlib.pyplot as plt %matplotlib inline import numpy as np import pandas as pd import os import re import datetime # 顯存自適應分配 gpus = tf.config.experimental.list_physical_devices(device_type='GPU') for gpu in gpus:tf.config.experimental.set_memory_growth(gpu,True) gpu_ok = tf.test.is_gpu_available() print("tf version:", tf.__version__) print("use GPU", gpu_ok) # 判斷是否使用gpu進行訓練

讀取數據

data = pd.read_csv ("F:/py/ziliao/數據集/PRSA_data_2010.1.1-2014.12.31.csv")




預處理


時間合并

data["tm"] = data.apply(lambda x:datetime.datetime(year=x["year"],month=x["month"],day=x["day"],hour=x["hour"]),axis=1) # 組合時間 并加入數據集 命名tm

data = data.set_index("tm")# 設置tm為數據集的索引


data = data.join(pd.get_dummies(data.cbwd)) # 把風向轉換成獨熱編碼




構造訓練數據與目標數據

# 樣本中是每隔一小時采集一次數據, # 我們可以用前5天的數據去預測明天的pm2.5的值 # 從當前點來看 前5天的數據為 train數據 后一天的數據為label # 如 今天是 2020年1月6日 我們手里有1月1日到5日的數據 那么我們需要預測的數據就是明天的值 seq_length = 5 * 24 delay = 24 data_ = [] for i in range(len(data)-seq_length-delay):data_.append(data.iloc[i:i+seq_length+delay])

data_ = np.array([df.values for df in data_])

np.random.shuffle(data_)# 亂序

提取訓練特征和目標值

# 提取訓練特征和目標值 x = data_[:,:5*24,:] # 特征 x.shape

y = data_[:,-1,0] # 目標值 y.shape # 劃分數據集及 前百分之80為訓練集 后百分20為測試集 split_b = int(data_.shape[0]*0.8) train_x = x[:split_b] train_y = y[:split_b] test_x = x[split_b:] test_y = y[split_b:] train_x.shape,train_y.shape test_x.shape,test_y.shape


標準化

mean = train_x.mean(axis=0) # 按列求均值 std = train_x.std(axis=0) # 按列求方差

train_x = (train_x-mean)/std test_x = (test_x-mean)/std

基礎建模-多層感知機進行預測

batch_size = 128 model = tf.keras.Sequential() model.add(tf.keras.layers.Flatten(input_shape=(train_x.shape[1:]))) model.add(tf.keras.layers.Dense(32,activation="relu")) model.add(tf.keras.layers.Dense(1)) model.compile(optimizer="adam",loss="mae", # 平均絕對誤差metrics=["acc"] ) history = model.fit(train_x,train_y,batch_size=batch_size,epochs=50,validation_data=(test_x,test_y))



LSTM網絡建模

model2 = tf.keras.Sequential() model2.add(tf.keras.layers.LSTM(32,input_shape=(120,11))) model2.add(tf.keras.layers.Dense(1)) model2.compile(optimizer="adam",loss="mae", # 平均絕對誤差metrics=["acc"] ) history = model2.fit(train_x,train_y,batch_size=batch_size,epochs=50,validation_data=(test_x,test_y))



LSTM層的優化(堆疊)

model3 = tf.keras.Sequential() model3.add(tf.keras.layers.LSTM(32,input_shape=(120,11),return_sequences=True)) model3.add(tf.keras.layers.LSTM(32,return_sequences=True)) model3.add(tf.keras.layers.LSTM(32,return_sequences=True)) model3.add(tf.keras.layers.LSTM(32)) model3.add(tf.keras.layers.Dense(1)) # 降低學習速率 lr_reduce = tf.keras.callbacks.ReduceLROnPlateau("val_loss",patience=3,factor=0.5,min_lr=0.000001) model3.compile(optimizer="adam",loss="mae", # 平均絕對誤差metrics=["acc"] ) history = model3.fit(train_x,train_y,batch_size=batch_size,epochs=50,callbacks=[lr_reduce],validation_data=(test_x,test_y))


總結

以上是生活随笔為你收集整理的深度学习-Tensorflow2.2-RNN循环神经网络{11}-RNN空气污染预测-26的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。