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

TensorFlow LSTM文本分类:输入数据转换与维度变化疑问

关于LSTM文本分类中词嵌入后的张量维度变化

嘿,这个问题问得很到位!答案是肯定的——经过词嵌入查找后,原本的2维数据确实会变成3维张量,我来给你拆解清楚:

核心逻辑

你的输入text_seq是一个2×11的2维张量,形状对应(样本数, 序列长度):每个样本是一段长度为11的词索引序列,总共有2个样本。

词嵌入层(比如TensorFlow里的tf.keras.layers.Embedding)的作用,是把每个词索引映射成一个固定维度的密集向量(比如128维、256维,这个维度你可以自己定义)。也就是说,原来序列中每个位置的单个整数(词索引),都会被替换成一个(嵌入维度,)的向量。这样一来,整个张量的维度就从2维扩展成了3维。

代码演示验证

用你给出的示例数据,我们可以写一段简单的代码来验证这个变化:

import tensorflow as tf

# 你的输入:2个样本,每个样本序列长度11
text_seq = [[11,21,43,22,11,4,1,3,5,2,8],[4,2,11,4,11,0,0,0,0,0,0]]
# 转换为TensorFlow张量
text_tensor = tf.convert_to_tensor(text_seq, dtype=tf.int32)
print("输入张量形状:", text_tensor.shape)  # 输出 (2, 11)

# 定义词嵌入层:假设词汇表大小是50,嵌入维度设为128
embedding_layer = tf.keras.layers.Embedding(input_dim=50, output_dim=128)
# 执行词嵌入查找
embedded_tensor = embedding_layer(text_tensor)
print("嵌入后张量形状:", embedded_tensor.shape)  # 输出 (2, 11, 128)

为什么LSTM需要3维输入?

TensorFlow中的LSTM层期望的输入形状就是(batch_size, sequence_length, input_dim):

  • batch_size:批次中的样本数量(这里是2)
  • sequence_length:每个样本的序列长度(这里是11)
  • input_dim:每个时间步输入的特征维度(这里就是词嵌入的维度128)

这种3维结构正好让LSTM可以沿着序列长度的维度,逐个处理每个词的嵌入向量,捕捉序列中的上下文信息,完美适配文本分类的需求。

内容的提问来源于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.26 09:24:44