tf.keras.layers.LSTM/tf.keras.layers.LSTMCell
tf.keras.layers.LSTM/tf.keras.layers.LSTMCell可配置的参数,主要有:
units:输出维度;
input_shape (timestep, input_dim),timestep可以设置为None,input_dim为输入数据维度;
activation:激活函数;
recurrent_activation: 为循环步施加的激活函数;
return_sequences:=True时,返回全部序列;=False时,返回输出序列中的最后一个cell的输出;
return_state: 布尔值。除了输出之外是否返回最后一个状态;
dropout:0~1之间的浮点数,控制输入线性变换的神经元断开比例;
recurrent_dropout:0~1之间的浮点数,控制循环状态的线性变换的神经元断开比例。
代码:
import numpy as np
inputs = tf.keras.Input(shape=(3, 1))
lstm = layers.LSTM(1, return_sequences=True)(inputs)
model_lstm_1 = tf.keras.models.Model(inputs=inputs, outputs=lstm)
inputs = tf.keras.Input(shape=(3, 1))
lstm = layers.LSTM(1, return_sequences=False)(inputs)
model_lstm_2 = tf.keras.models.Model(inputs=inputs, outputs=lstm)
t1, t2, t3 序列
data = [[[0.1],
[0.2],
[0.3]]]
print(data)
print("当return_sequences=True时的输出",model_lstm_1.predict(data))
print("当return_sequences=False时的输出",model_lstm_2.predict(data))
输出:
[[[0.1], [0.2], [0.3]]]
当return_sequences=True时的输出 [[[-0.0106758 ]
[-0.02711176]
[-0.04583194]]]
当return_sequences=False时的输出 [[0.05914127]]
LSTMcell是LSTM层的实现单元。
LSTM是一个LSTM网络层
LSTMCell是一个单步的计算单元,即一个LSTM UNIT。
LSTM
tf.keras.layers.LSTM(16, return_sequences=True)
LSTMCell
x = tf.keras.Input((None, 3))
y = layers.RNN(layers.LSTMCell(16))(x)
model_lstm_3= tf.keras.Model(x, y)