You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow中LSTM单元的num_units参数具体指什么?

解惑TensorFlow中LSTM的num_units参数

我完全懂这种翻遍资料还是摸不着头脑的感觉!咱们直接把num_units这个参数讲透。

简单来说,num_units就是LSTM单元中隐藏状态(hidden state)的维度大小,也可以理解为这个LSTM层里有多少个“记忆细胞”在并行工作。

拿你提到的输入形状[6,5]来举例子:这里的6应该是样本数量,5是每个时间步的输入特征维度(假设你是把数据按[batch_size, input_size]的格式喂进去的)。当你用BasicLSTMCell(num_units=N)创建单元时,这个LSTM层会输出一个维度为N的隐藏状态——不管你的输入特征是5维还是其他维度,隐藏状态的维度完全由num_units决定。

再结合你说的时间步展开:当BasicLSTMCell被展开成t个时间步时,每个时间步的LSTM单元都会接收当前时间步的输入,再结合上一个时间步的隐藏状态,输出新的隐藏状态,而这个隐藏状态的维度始终是你设置的num_units值。

举个实际代码的小例子,更直观:

import tensorflow as tf
from tensorflow.contrib.rnn import BasicLSTMCell

# 定义LSTM单元,num_units设为10
lstm_cell = BasicLSTMCell(num_units=10)
# 输入:batch_size=6,input_size=5,time_steps=3(假设我们有3个时间步)
inputs = tf.random_normal([6, 3, 5])
# 初始化隐藏状态
initial_state = lstm_cell.zero_state(6, tf.float32)
# 展开LSTM计算
outputs, final_state = tf.nn.dynamic_rnn(lstm_cell, inputs, initial_state=initial_state, dtype=tf.float32)

# outputs的形状是[6, 3, 10]——对应每个样本、每个时间步的10维隐藏状态
# final_state包含c(细胞状态)和h(隐藏状态),两者形状都是[6, 10]

总结一下:

  • num_units控制LSTM隐藏状态的维度,是你对模型“记忆容量”的一个设置
  • 它和输入特征维度是相互独立的,模型会自动处理输入到隐藏状态的维度转换
  • 展开后的每个时间步,隐藏状态的维度都等于num_units

内容的提问来源于stack exchange,提问作者Aaditya Ura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:54:45