LSTM函式的各個引數的含義

2021-09-24 05:39:20 字數 3539 閱讀 4987

# -*- coding: utf-8 -*-

# 這份檔案的作用是作為乙個示例,記錄關於 lstm 函式的各個引數的含義

import tensorflow as tf

import numpy as np

# 這裡建立乙個簡單的模型演示 lstm 層的特性

model = tf.keras.models.sequential(

)model.add(tf.keras.layers.lstm(

# 這裡是作為sequential模型的第一層所以指定input_shape引數,後面加的層不需要這個

# 這裡的input_shape是兩個元素的,第乙個代表每個輸入的樣本序列長度,第二個元素代表

# 每個序列裡面的1個元素具有多少個輸入資料。例如,lstm處理的序列長度為10,每個時間

# 步即序列的元素是由兩個維度組成,那麼這個引數設定為(10, 2)

input_shape =(10

,2),

# unit 決定了一層裡面 lstm 單元的數量。這些單元是並列的,乙個時間步驟裡,輸入這個

# 層的訊號,會被所有 unit 同時並行處理,形成若 unit 個輸出。所以官方文件說,這個

# unit 引數是這一層輸出的維度。如果說上面的input_shape是(10, 2)的話,設個設定為

# units = 3,那麼這一層的輸出一般就是(10, 3),如果返回的h(輸出序列)是所有的h

# 的話。

units =3,

# 啟用函式的型別,預設是沒有啟用函式。這個啟用函式決定了每個 unit 每一次計算的輸出

# 範圍。如果要模擬原**的話,應該設定activation = "tanh"。

activation =

"tanh"

,# recurrent activation是作用於 c 的計算,要模擬原文的話需要設定為sigmoid

recurrent_activation =

"sigmoid"

,# 是否增加乙個偏置向量。模擬原文的話設定為 true。

use_bias =

true

,# 用來初始化核心權重矩陣,用於對輸入進行線性轉換

kernel_initializer =

"glorot_uniform"

,# 回歸計算的核心權重矩陣初始化方法,用於給回歸狀態進行線性轉換 orthogonal 是預設

# 的值

recurrent_initializer =

"orthogonal"

,# 給偏置進行初始化操作的方法,預設值是 zeros

bias_initializer =

"zeros"

,# 如果設定為 true 會給遺忘門增加乙個 bias 引數,同時強制設定bias_initializer為

# zeros

unit_forget_bias =

true

,# 核心權重歸一化的方法,預設為 none

kernel_regularizer =

none

,# 回歸權重矩陣歸一化方法,預設none

recurrent_regularizer =

none

,# 用於偏置矩陣的歸一化方法,預設none

bias_regularizer =

none

,# 給 lstm 輸出的歸一化方法,預設none

activity_regularizer =

none

,# 用於核心引數矩陣的約束函式,預設none

kernel_constraint =

none

,# 回歸引數矩陣的約束函式,預設none

recurrent_constraint =

none

,# 偏置引數矩陣的約束函式,預設為none

bias_constraint =

none

,# 使多少比重的神經元輸出(unit的輸出)啟用失效,預設為0,模仿原文為0

dropout =

0.0,

# recurrent_dropout是給遞迴狀態 c 設定的dropout引數

recurrent_dropout =

0.0,

# 實現方式。1會將運算分解為若干小矩陣的乘法加法運算,2則相反。這個引數不用情況下

# 會使得程式具有不同的效能表現。

implementation =1,

# return_sequences 是否返回全部輸出的序列。false否,true返回全部輸出,框架預設

# false,模擬原文可以考慮設定為true

return_sequences =

true

,# 是否返回lstm的中間狀態,框架預設false,模擬原文可以設定為false。這裡返回的狀態

# 是最後計算後的狀態

return_state =

false

,# 是否反向處理。設定為誒true則反向處理輸入序列以及返回反向的輸出。預設為false

go_backwards =

false

,# 預設為false,如果設定為true,每乙個批的索引i代表的樣本的最後乙個狀態量c,將會作

# 為初始化狀態,初始化下乙個索引i的批次樣本

stateful =

false

,# 是否展開。把lstm展開計算會加速回歸計算的過程,但是會占用更多記憶體,建議在小序列上

# 展開。預設為false。

unroll =

false))

# 列印除錯資訊

model.summary(

)# 輸入批次,包含所有樣本,這裡就乙個樣本

input_data_all =

[# 樣本內有10個元素,對應輸入序列有10個元素,每個元素裡面包含兩個子元素,對應每個

# 時間步 lstm 單元處理兩個輸入資料。這個是跟上面構造模型時的input_shape一致的。[[

1,2]

,[3,

4],[

5,6]

,[7,

8],[

9,10]

,[11,

12],[

13,14]

,[15,

16],[

17,18]

,[19,

20]]]

# 執行上面的模型,得到計算結果

output_data_all = model.predict(np.array(input_data_all, dtype=np.float64)

)# 上面的輸入只有乙個樣本,所以輸出也只有乙個樣本,由於指定返回所有輸出序列,也就是

# return_sequences = true, 所以這裡返回的output_data_all[0]包含了10個元素,對應

# 輸入序列10個元素的每個的計算結果,每個結果又是具有3個元素的,對應了上面設定units=3

# 的每個 lstm unit 的計算輸出結果。

print

(output_data_all)

LSTM函式的各個引數的含義

coding utf 8 這份檔案的作用是作為乙個示例,記錄關於 lstm 函式的各個引數的含義 import tensorflow as tf import numpy as np 這裡建立乙個簡單的模型演示 lstm 層的特性 model tf.keras.models.sequential m...

Keras中LSTM引數的含義

units 是輸出的維度。在下圖中,中間的綠色cell 裡面有四個黃色小框,每乙個小黃框代表乙個前饋網路層,對,就是經典的神經網路的結構,num units就是這個層的隱藏神經元個數,就這麼簡單。其中1 2 4的啟用函式是 sigmoid,第三個的啟用函式是 tanh。參考 units還可以理解為 ...

linux命令passwd各個引數含義

root mylinux passwd 選項 使用者名稱 選項含義 s查詢使用者密碼的狀態,也就是 etc shadow 檔案中此使用者密碼的內容。僅 root 使用者可用 l暫時鎖定使用者,該選項會在 etc shadow 檔案中指定使用者的加密密碼串前新增 使密碼失效。僅 root 使用者可用 ...