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
相关产品推荐
相关产品推荐

