国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

使用 CNN 進行時間序列預測!!

人工智能 深度學習
1D 卷積層(One-Dimensional Convolutional Layer)是卷積神經網絡(CNN)的基本組成部分,廣泛應用于處理一維序列數據,如時間序列分析、自然語言處理、語音識別等。

1D 卷積層(One-Dimensional Convolutional Layer)是卷積神經網絡(CNN)的基本組成部分,廣泛應用于處理一維序列數據,如時間序列分析、自然語言處理、語音識別等。

1D 卷積層是深度學習中用于處理序列數據的重要工具。它通過滑動窗口方式提取局部特征,并在多個通道間整合信息。1D 卷積為時間序列、語音信號和文本數據提供了高效的特征提取能力,同時通過參數共享和稀疏連接保持了模型的高效性和魯棒性。

什么是1D卷積層

1D 卷積層通過滑動一個稱為卷積核(或濾波器)的窗口,在輸入序列上進行卷積操作,以提取局部特征。與2D卷積層主要用于圖像處理不同,1D 卷積層主要處理一維數據,如時間序列或文本序列。

1D 卷積的基本原理

1D 卷積操作通過一個稱為卷積核(或濾波器)的固定大小的窗口,在輸入數據的一個維度上滑動,進行逐元素的點積運算,從而提取局部特征。

具體步驟如下:

  1. 輸入數據:假設輸入數據為一個長度為 L 的一維信號,可能具有多個通道(例如,多種傳感器數據)。
  2. 卷積核:設定一個長度為 K 的卷積核,通常會有多個卷積核以提取不同的特征。
  3. 滑動窗口:卷積核在輸入信號上以一定的步長(stride)滑動,每一步都與輸入信號的對應部分進行點積運算,并加上一個偏置項,生成一個輸出值。
  4. 輸出特征圖:滑動通過整個輸入信號后,生成一個新的特征序列,稱為特征圖(feature map)。

關鍵參數

  1. 卷積核大小(Kernel Size)
    決定了每次卷積操作覆蓋的輸入范圍。
    較大的卷積核可以捕捉更長范圍的依賴關系,但計算復雜度也相應增加。
  2. 步長(Stride)
    卷積核每次滑動的步幅。較大的步長會減少輸出特征圖的長度,但可能導致信息丟失。
  3. 填充(Padding)
    在輸入數據的邊緣添加額外的值(通常為零),以控制輸出特征圖的長度。
  4. 通道數(Channels)
    每個卷積核可以有多個輸入通道,尤其在多通道輸入數據(如多傳感器數據)中常見。
  5. 激活函數(Activation Function)
    通常在卷積操作后應用非線性激活函數,如 ReLU,以引入非線性能力。

1D 卷積層的應用

1D 卷積層廣泛應用于以下領域

  • 時間序列分析:如股票價格預測、傳感器數據分析等,通過1D 卷積提取時間上的模式和趨勢。
  • 自然語言處理(NLP):用于文本分類、情感分析,通過提取詞語序列中的局部特征。
  • 音頻信號處理:如語音識別、音樂分類,通過 1D 卷積提取音頻信號中的特征。
  • 生物信息學:如基因序列分析,通過識別 DNA/RNA 序列中的模式。

優缺點

優點

  1. 參數共享:卷積核在整個輸入序列上共享參數,顯著減少了模型的參數數量,降低了過擬合的風險。
  2. 局部感受野:能夠有效捕捉輸入序列中的局部模式和短期依賴關系,對于處理具有局部相關性的序列數據非常有效。
  3. 計算效率高:由于參數較少,1D卷積層的計算復雜度相對較低,適合處理長序列數據。
  4. 平移不變性:卷積操作對輸入序列中的特定模式具有平移不變性,即模式在序列中的位置發生變化時,模型仍能有效識別。
  5. 靈活性強:可以通過堆疊多個卷積層或調整卷積核大小,捕捉不同尺度的特征。

缺點

  1. 長距離依賴捕捉能力有限
    雖然堆疊多個卷積層可以擴展感受野,但在捕捉序列中長距離依賴關系時,1D卷積層可能不如循環神經網絡(RNN)或自注意力機制(如Transformer)有效。
  2. 特征提取的局限性
    在某些復雜任務中,1D卷積層提取的特征可能不足以捕捉所有重要的信息,需要結合其他模型或技術進行增強。

案例分享

以下是分別使用 PyTorch 和 TensorFlow 實現 1D 卷積神經網絡來進行時間序列預測的示例代碼。

PyTorch 實現

import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
import matplotlib.pyplot as plt

# 生成示例時間序列數據
def generate_sine_wave(seq_length, num_samples):
    x = np.linspace(0, 4 * np.pi, seq_length)
    data = np.array([np.sin(x + np.random.uniform(0, 2 * np.pi)) for _ in range(num_samples)])
    return data

# 數據準備
seq_length = 50  # 輸入序列長度
num_samples = 1000  # 樣本數
prediction_length = 1  # 預測的未來步數

data = generate_sine_wave(seq_length + prediction_length, num_samples)

# 劃分數據:輸入和目標
X = data[:, :-prediction_length]  # 輸入序列
y = data[:, -prediction_length:]  # 目標值

# 轉為 PyTorch 張量
X = torch.tensor(X, dtype=torch.float32).unsqueeze(1)  # 添加通道維度 (batch, channel, seq_length)
y = torch.tensor(y, dtype=torch.float32)

# 劃分訓練和測試集
train_size = int(0.8 * len(X))
X_train, X_test = X[:train_size], X[train_size:]
y_train, y_test = y[:train_size], y[train_size:]

# 檢查數據形狀
print("訓練集輸入形狀:", X_train.shape)  # (batch_size, channels, seq_length)
print("訓練集目標形狀:", y_train.shape)  # (batch_size, prediction_length)

# 定義 1D 卷積預測模型
class Conv1DPredictor(nn.Module):
    def __init__(self, input_channels, output_size, kernel_size=3):
        super(Conv1DPredictor, self).__init__()
        self.conv1 = nn.Conv1d(in_channels=input_channels, out_channels=16, kernel_size=kernel_size, padding=1)
        self.conv2 = nn.Conv1d(in_channels=16, out_channels=32, kernel_size=kernel_size, padding=1)
        self.fc = nn.Linear(32 * seq_length, output_size)  # 全連接層,用于生成預測結果

    def forward(self, x):
        x = torch.relu(self.conv1(x))  # 第一層卷積 + 激活
        x = torch.relu(self.conv2(x))  # 第二層卷積 + 激活
        x = x.view(x.size(0), -1)  # 展平
        x = self.fc(x)  # 全連接層輸出
        return x

# 初始化模型
model = Conv1DPredictor(input_channels=1, output_size=prediction_length)
criterion = nn.MSELoss()  # 損失函數
optimizer = optim.Adam(model.parameters(), lr=0.001)  # 優化器

# 訓練模型
num_epochs = 50
train_losses = []

for epoch in range(num_epochs):
    model.train()
    optimizer.zero_grad()
    output = model(X_train)  # 前向傳播
    loss = criterion(output, y_train)  # 計算損失
    loss.backward()  # 反向傳播
    optimizer.step()  # 更新權重
    train_losses.append(loss.item())
    if (epoch + 1) % 10 == 0:
        print(f"Epoch [{epoch + 1}/{num_epochs}], Loss: {loss.item():.4f}")

# 測試模型
model.eval()
with torch.no_grad():
    y_pred = model(X_test)
    test_loss = criterion(y_pred, y_test)
    print(f"測試集損失: {test_loss.item():.4f}")

# 可視化結果
plt.figure(figsize=(10, 5))
plt.plot(y_test.numpy()[:50], label="True Values")
plt.plot(y_pred.numpy()[:50], label="Predictions")
plt.legend()
plt.title("Time Series Prediction")
plt.show()

TensorFlow 實現

import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv1D, Dense, Flatten
from tensorflow.keras.optimizers import Adam
import matplotlib.pyplot as plt

# 生成示例時間序列數據
def generate_sine_wave(seq_length, num_samples):
    x = np.linspace(0, 4 * np.pi, seq_length)
    data = np.array([np.sin(x + np.random.uniform(0, 2 * np.pi)) for _ in range(num_samples)])
    return data

# 數據準備
seq_length = 50  # 輸入序列長度
num_samples = 1000  # 樣本數
prediction_length = 1  # 預測未來步數

data = generate_sine_wave(seq_length + prediction_length, num_samples)

# 劃分數據:輸入和目標
X = data[:, :-prediction_length]  # 輸入序列
y = data[:, -prediction_length:]  # 目標值

# 劃分訓練集和測試集
train_size = int(0.8 * len(X))
X_train, X_test = X[:train_size], X[train_size:]
y_train, y_test = y[:train_size], y[train_size:]

# 擴展維度以適配 Conv1D 輸入格式
X_train = X_train[..., np.newaxis]  # 轉換為 (batch_size, seq_length, channels)
X_test = X_test[..., np.newaxis]

# 檢查數據形狀
print("訓練集輸入形狀:", X_train.shape)  # (batch_size, seq_length, channels)
print("訓練集目標形狀:", y_train.shape)  # (batch_size, prediction_length)

# 構建 1D 卷積預測模型
model = Sequential([
    Conv1D(filters=16, kernel_size=3, activatinotallow='relu', padding='same', input_shape=(seq_length, 1)),
    Conv1D(filters=32, kernel_size=3, activatinotallow='relu', padding='same'),
    Flatten(),
    Dense(10, activatinotallow='relu'),
    Dense(prediction_length)  # 輸出層
])

# 編譯模型
model.compile(optimizer=Adam(learning_rate=0.001), loss='mse')

# 訓練模型
history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_split=0.2, verbose=1)

# 測試模型
test_loss = model.evaluate(X_test, y_test, verbose=0)
print(f"測試集損失: {test_loss:.4f}")

# 預測并可視化
y_pred = model.predict(X_test)

plt.figure(figsize=(10, 5))
plt.plot(y_test[:50], label="True Values")
plt.plot(y_pred[:50], label="Predictions")
plt.legend()
plt.title("Time Series Prediction with 1D Convolution")
plt.show()

責任編輯:華軒 來源: 程序員學長
相關推薦

2024-07-18 13:13:58

2023-03-16 07:27:30

CnosDB數據庫

2021-04-07 10:02:00

XGBoostPython代碼

2023-03-27 07:34:28

XGBoostInluxDB時間序列

2024-01-30 01:12:37

自然語言時間序列預測Pytorch

2024-11-04 15:34:01

2024-10-23 17:10:49

2022-11-24 17:00:01

模型ARDL開發

2022-12-09 14:50:51

機器學習時間序列預測

2024-05-09 16:23:14

2017-01-09 09:20:07

Ubuntu NTP同步

2024-12-16 13:15:15

機器學習時間序列分析數據缺失

2024-06-27 16:38:57

2023-10-16 18:02:29

2024-06-17 16:02:58

2023-10-13 15:34:55

時間序列TimesNet

2021-07-01 21:46:30

PythonHot-Winters數據

2021-07-02 10:05:45

PythonHot-winters指數平滑

2023-03-16 18:09:00

機器學習數據集

2022-08-16 09:00:00

機器學習人工智能數據庫
點贊
收藏

51CTO技術棧公眾號

欧美综合一区| 久久久久久久久免费视频| 免费视频国产一区| 97超碰色婷婷| 91老司机福利在线| 免费观看国产精品视频| 欧美日韩午夜影院| 亚洲精品1区2区| 亚洲国产欧美日韩另类综合| 国产欧美精品一区二区三区介绍| 欧美变态另类刺激| 日本一区二区免费在线观看视频 | 五月婷婷色综合| 欧美性xxxx69| 久久丝袜视频| 精品爽片免费看久久| 国产视频网址在线| 日韩理论片一区二区| 国产极品在线视频| 国产自产高清不卡| 视频在线精品一区| 国产精品chinese| 国产精品久久久久久久久久| 精品视频在线观看免费观看| 日韩精品极品毛片系列视频| 天堂地址在线www| 欧美性猛交xxxx偷拍洗澡| 污污免费网站| 亚洲女人****多毛耸耸8| 国产野外作爱视频播放| 99久精品国产| 亚洲综合激情五月| 天堂在线亚洲视频| 久久99久久精品国产| 国精品一区二区三区| 亚洲自拍小视频| 天堂美国久久| 国产啪精品视频网站| 欧美色女视频| 成人免费福利在线| 91精品久久久久久久久久不卡| 国产免费一区二区三区香蕉精| 九色精品国产蝌蚪| 国产精品久久久久一区二区| 神马午夜久久| 在线观看亚洲成人| 久久久91麻豆精品国产一区| 最近2019中文字幕第三页视频| 国产日韩av在线| 欧美久久精品| 久久久久久久久久久久av| 伊人www22综合色| 久久久久中文字幕| 香蕉久久精品| 国产精彩精品视频| 久久密一区二区三区| 91香蕉国产在线观看| 欧美精品麻豆| 欧美极品一区| 韩国三级电影一区二区| 视色,视色影院,视色影库,视色网| 国产一区二区三区在线观看免费| 91九色丨porny丨国产jk| 久久嫩草精品久久久精品一| av天天在线| 色综合久久88色综合天天6| wwwxxx在线观看| 精品av久久707| 激情小说亚洲| 57pao国产成人免费| 我不卡影院28| 亚洲三级一区| 国产欧美综合色| 日韩电影免费| 精品国产一区二区三区忘忧草| 国产精品亚洲一区二区三区在线观看 | 亚洲人辣妹窥探嘘嘘| 又紧又大又爽精品一区二区| 啊v在线视频| 精品五月天久久| 思热99re视热频这里只精品| 国产精品一区二区三区免费| 久久精品国产精品亚洲精品| 午夜dv内射一区二区| 精品久久久久久国产91| av毛片在线播放| 欧美成人精品激情在线观看| 日韩国产欧美| 国产又爽又黄ai换脸| 亚洲欧洲99久久| 国产乱色在线观看| 欧美片一区二区三区| 尤物在线精品| 一女被多男玩喷潮视频| 欧美午夜激情在线| 成人a在线观看高清电影| 成人福利在线视频| 国产精品一区二区三区99| 激情视频免费| 亚洲香蕉成人av网站在线观看| 日韩在线综合| 2018国产在线| 欧美在线短视频| 久久九九精品视频| 久久精品一区二区三区不卡免费视频| 久久嫩草精品久久久精品一| 精品国产丝袜高跟鞋| 欧美亚洲一级片| 国产成人精品免费在线| 韩日在线视频| 国语自产精品视频在免费| 视频一区欧美精品| 360天大佬第二季在线观看| 亚洲日韩第一页| 亚洲欧洲视频| 男裸体无遮挡网站| 亚洲欧美日韩中文在线制服| 欧美亚洲不卡| 免费看的国产视频网站| 日韩视频免费观看| 午夜一区在线| 视频在线91| 久久久久久久国产精品| 六月丁香综合在线视频| jizzjizz在线观看| 国产成人精品久久亚洲高清不卡| 国产高清精品久久久久| 免费黄色网址在线观看| 国产精品网站大全| 中文字幕制服丝袜一区二区三区| a欧美人片人妖| 久久久久se| 色av成人天堂桃色av| 夜夜春成人影院| 日本成年人网址| 亚洲欧美在线磁力| 日韩高清不卡一区| 五月香视频在线观看| 国产一区二区丝袜| 亚洲狠狠丁香婷婷综合久久久| 秋霞午夜一区二区三区视频| 青青在线视频免费观看| 亚洲成人性视频| 国产乱码精品| 免费观看v片在线观看| av大片在线播放| 日韩a级黄色片| 免费欧美视频| 内射国产内射夫妻免费频道| 国产婷婷成人久久av免费高清| 美女黄色成人网| 日本在线观看网站| 久久av二区| 欧美一区二区三区人| 亚洲一区一卡| www亚洲人| 国严精品久久久久久亚洲影视| 色女孩综合影院| 欧美高清一区| 国产女主播在线直播| 国产精品国色综合久久| 欧美在线|欧美| 国产精品视频| 亚洲区欧洲区| 2021狠狠干| 久久久久久自在自线| 奇米一区二区三区av| 波多野结衣中文字幕一区 | 欧美日韩高清在线| 欧美成人亚洲| 免费av片在线观看一道本| 亚洲成人在线视频网站| 国产精品激情av电影在线观看 | 亚洲人av在线影院| 日韩一二三区不卡在线视频| 成人日韩精品| 国产精品入口| 国产一区在线不卡| 一本色道久久综合亚洲91| 国产精品无av码在线观看| 国产精品区免费视频| 欧美xxxx黑人又粗又长密月| 99热在线播放| 视频一区国产精品| 日韩精品大片| 精品在线不卡| 超碰97在线人人| 国产超碰91| 日韩精品一区二区三区丰满| 亚洲综合五月天| 亚洲激情一区二区三区| 在线播放豆国产99亚洲| 亚洲一区二区三区在线观看视频 | 伊人亚洲福利一区二区三区| 欧美视频13p| 欧美性xxxx极品hd满灌| 在线不卡免费av| 中文字幕av一区二区| 国内外成人免费激情在线视频网站| 在线不卡欧美精品一区二区三区|