Keras函数式模型中Word Embedding+BLSTM的输入形状X取值咨询
关于Keras函数式模型Input中X的取值说明
你这里的X应该是你预处理后统一的句子序列长度,也就是所有输入句子经过填充/截断后的固定长度,下面给你详细拆解:
为什么需要固定长度?因为深度学习模型要求输入维度是固定的,而原始句子的长度肯定参差不齐(有的句子10个词,有的可能200个),所以必须先对所有句子做标准化处理:用
keras.preprocessing.sequence.pad_sequences函数,把短句子补0(padding)、长句子截断(truncating),让所有句子都变成相同长度的数值序列。这个统一后的长度就是你要填的X。举个实际例子:假设你统计了数据集里所有句子的长度,发现95%的句子都不超过150个词,那你可以把maxlen设为150,处理完后每个句子都是150维的序列。这时候你的Input就应该写成:
inputs = Input(shape=(150,))衔接Embedding层的逻辑:接下来你的Embedding层会接收这个输入,它的输入形状就是
(batch_size, sequence_length),这里的sequence_length正好和Input里的X对应,之后再连接BLSTM层就顺理成章了。小提醒:X的取值不用盲目设很大,太大可能引入冗余、增加计算量;太小则会丢失长句的关键信息,最好先统计数据集的句子长度分布,再选一个合适的数值。
内容的提问来源于stack exchange,提问作者Rodrigo Serna Pérez
相关产品推荐
相关产品推荐

