3-1長短時記憶神經網路(LSTM)--簡單程式碼實現
阿新 • • 發佈:2019-02-16
LSTM(Long Short-Term Memory)是長短期記憶網路,是一種時間遞迴神經網路,適合於處理和預測時間序列中間隔和延遲相對較長的重要事件。LSTM 已經在科技領域有了多種應用。基於LSTM的系統可以學習翻譯語言、控制機器人、影象分析、文件摘要、語音識別影象識別、手寫識別、控制聊天機器人、預測疾病、點選率和股票、合成音樂等等任務。
該程式碼不使用任何第三方深度學習工具包實現,利用Python3實現。
# -*- coding: utf-8 -*- import copy, numpy as np np.random.seed(0) # 計算sigmoid函式的值 def sigmoid(x): output = 1/(1+np.exp(-x)) return output # 利用sigmoid函式計算誤差 def sigmoid_output_to_derivative(output): return output*(1-output) # 訓練資料集並進行迭代 int2binary = {} binary_dim = 8 largest_number = pow(2,binary_dim) binary = np.unpackbits(np.array([range(largest_number)],dtype=np.uint8).T,axis=1) for i in range(largest_number): int2binary[i] = binary[i] # 設定LSTM的引數 alpha = 0.1 input_dim = 2 hidden_dim = 16 output_dim = 1 # 初始化神經網路的權重 synapse_0 = 2*np.random.random((input_dim,hidden_dim)) - 1 synapse_1 = 2*np.random.random((hidden_dim,output_dim)) - 1 synapse_h = 2*np.random.random((hidden_dim,hidden_dim)) - 1 synapse_0_update = np.zeros_like(synapse_0) synapse_1_update = np.zeros_like(synapse_1) synapse_h_update = np.zeros_like(synapse_h) # 進行訓練 for j in range(10000):