# -*- 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 使用者可用 ...