自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

終于把 LSTM 算法搞懂了?。?!

人工智能
LSTM(長(zhǎng)短期記憶網(wǎng)絡(luò))是一種特殊類型的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),它能夠有效地解決傳統(tǒng) RNN 在處理長(zhǎng)序列時(shí)遇到的梯度消失和梯度爆炸問(wèn)題。

今天給大家分享一個(gè)強(qiáng)大的算法模型,LSTM

LSTM(長(zhǎng)短期記憶網(wǎng)絡(luò))是一種特殊類型的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),它能夠有效地解決傳統(tǒng) RNN 在處理長(zhǎng)序列時(shí)遇到的梯度消失和梯度爆炸問(wèn)題。

LSTM 的核心思想是通過(guò)多個(gè)門控機(jī)制來(lái)控制信息的流動(dòng),這些門控機(jī)制可以選擇性地保留或丟棄輸入數(shù)據(jù),從而幫助網(wǎng)絡(luò)捕捉長(zhǎng)時(shí)間跨度的依賴關(guān)系。

圖片

LSTM的工作原理

LSTM 的核心思想是通過(guò)引入記憶單元來(lái)存儲(chǔ)信息,并使用三個(gè)主要的門(輸入門、遺忘門、輸出門)來(lái)決定哪些信息應(yīng)該保留,哪些信息應(yīng)該遺忘,以及哪些信息應(yīng)該更新。

遺忘門(Forget Gate)

遺忘門決定了哪些信息將從記憶單元中丟棄,它的輸出是一個(gè)0到1之間的值,0表示完全丟棄信息,1表示完全保留信息。

圖片

圖片

更新記憶單元狀態(tài)

記憶單元通過(guò)遺忘門和輸入門的輸出進(jìn)行更新。

圖片

輸出門(Output Gate)

LSTM的優(yōu)勢(shì)

  1. 避免梯度消失/爆炸
    LSTM能夠通過(guò)門控機(jī)制,有效地保存和更新記憶信息,避免了傳統(tǒng)RNN中由于長(zhǎng)時(shí)間步的反向傳播導(dǎo)致的梯度消失和梯度爆炸問(wèn)題。
  2. 適應(yīng)長(zhǎng)期記憶
    LSTM 可以根據(jù)需求保留長(zhǎng)期記憶(通過(guò)記憶單元狀態(tài)),使得它在處理長(zhǎng)序列任務(wù)時(shí)更加高效。
  3. 靈活性強(qiáng)
    LSTM不僅適用于標(biāo)準(zhǔn)的時(shí)間序列任務(wù),還能夠處理文本、語(yǔ)音等多種任務(wù),應(yīng)用非常廣泛。

案例分享

下面是一個(gè)使用 LSTM(長(zhǎng)短期記憶網(wǎng)絡(luò))進(jìn)行蘋果公司股價(jià)預(yù)測(cè)的示例代碼。

我們將使用  yfinance 庫(kù)獲取蘋果公司歷史股價(jià)數(shù)據(jù), 并通過(guò) TensorFlow 庫(kù)來(lái)構(gòu)建 LSTM 模型。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import yfinance as yf
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout

ticker = 'AAPL'  # 蘋果的股票代碼
start_date = '2010-01-01'
end_date = '2024-11-01'

data = yf.download(ticker, start=start_date, end=end_date)

data = data[['Close']]

scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data)

def create_dataset(data, time_step=60):
    X, y = [], []
    for i in range(len(data) - time_step - 1):
        X.append(data[i:(i + time_step), 0])
        y.append(data[i + time_step, 0])
    return np.array(X), np.array(y)

time_step = 60  # 使用過(guò)去60天的數(shù)據(jù)來(lái)預(yù)測(cè)下一天的股價(jià)
X, y = create_dataset(scaled_data, time_step)

train_size = int(len(X) * 0.8)
X_train, X_test = X[:train_size], X[train_size:]
y_train, y_test = y[:train_size], y[train_size:]


X_train = X_train.reshape(X_train.shape[0], X_train.shape[1], 1)
X_test = X_test.reshape(X_test.shape[0], X_test.shape[1], 1)

# 構(gòu)建LSTM模型
model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1], 1)))
model.add(Dropout(0.2))  # Dropout層防止過(guò)擬合
model.add(LSTM(units=50, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(units=1))  # 輸出預(yù)測(cè)的股價(jià)


model.compile(optimizer='adam', loss='mean_squared_error')

model.fit(X_train, y_train, epochs=10, batch_size=32)

predictions = model.predict(X_test)

predictions = scaler.inverse_transform(predictions)
y_test_actual = scaler.inverse_transform(y_test.reshape(-1, 1))

plt.figure(figsize=(14, 6))
plt.plot(data.index[train_size+time_step+1:], y_test_actual, color='blue', label='Real Price')
plt.plot(data.index[train_size+time_step+1:], predictions, color='red', label='Predicted Price')
plt.title('Apple Stock Price Prediction using LSTM')
plt.xlabel('Time')
plt.ylabel('Stock Price (USD)')
plt.legend()
plt.show()

圖片

責(zé)任編輯:武曉燕 來(lái)源: 程序員學(xué)長(zhǎng)
相關(guān)推薦

2024-09-23 09:12:20

2024-10-16 07:58:48

2024-09-12 08:28:32

2024-10-17 13:05:35

神經(jīng)網(wǎng)絡(luò)算法機(jī)器學(xué)習(xí)深度學(xué)習(xí)

2024-09-20 07:36:12

2024-10-28 00:38:10

2024-11-15 13:20:02

2025-02-21 08:29:07

2024-12-12 00:29:03

2024-07-17 09:32:19

2024-10-05 23:00:35

2024-11-14 00:16:46

Seq2Seq算法RNN

2024-08-01 08:41:08

2024-12-26 00:34:47

2024-10-28 15:52:38

機(jī)器學(xué)習(xí)特征工程數(shù)據(jù)集

2024-10-30 08:23:07

2024-10-08 15:09:17

2024-10-08 10:16:22

2025-01-15 11:25:35

2024-10-28 00:00:10

機(jī)器學(xué)習(xí)模型程度
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)