如何设置TensorFlow中LSTM各输入输出向量的长度参数
TensorFlow LSTM层各类输入输出向量长度设置方法
你提到的三类共6项输入输出的向量长度,对应设置规则如下:
- 外部输入向量长度:不需要在LSTM构造函数里单独指定,默认取输入张量最后一维的数值,你也可以通过
input_shape参数显式声明。比如单条样本序列长度为20、每个时间步的输入特征数为12,就设置input_shape=(20,12),这里的12就是外部输入的向量长度。 - 外部输出、隐状态(h)输入/输出、上下文状态(c)输入/输出:这五项的向量长度完全一致,统一由LSTM构造函数的
units参数指定。比如你设置units=64,上述五项的向量长度就都是64。
实际代码示例如下:
import tensorflow as tf from tensorflow.keras import layers # units=64统一指定隐状态、上下文状态、输出的向量长度 lstm_layer = layers.LSTM(units=64, return_sequences=True, return_state=True) # 输入张量形状为(批量大小, 序列长度, 输入特征维度),最后一维16就是外部输入向量长度 input_data = tf.random.normal((32, 10, 16)) output, h_state, c_state = lstm_layer(input_data) # 打印形状验证: print(output.shape) # (32, 10, 64) 外部输出向量长度为64 print(h_state.shape) # (32, 64) 隐状态输出向量长度为64 print(c_state.shape) # (32, 64) 上下文状态输出向量长度为64
如果需要手动传入初始隐状态、上下文状态,只要保证两者的最后一维和你设置的units参数数值一致即可,不需要额外调整LSTM的构造参数。
内容的提问来源于stack exchange,提问作者Mark Lavin
相关产品推荐
相关产品推荐

