首页 > 解决方案 > 句子分类:为什么我的embedding没有减少后续层的形状?

问题描述

我想嵌入所有包含 5 个单词的句子,而我的训练集的总词汇量为 10000 个单词。我使用这段代码:

import tensorflow as tf
vocab_size = 10000

inputs = tf.keras.layers.Input(shape=(5,vocab_size), name="input", )
embedding = tf.keras.layers.Embedding(10000, 64)(inputs)
conv2d_1 = Conv2D(        filters = 32, kernel_size = (3,3),
                  strides =(1), padding = 'SAME',)(embedding)
model = tf.keras.models.Model(inputs=inputs, outputs=conv2d_1)
model.summary()

运行后我得到:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input (InputLayer)           [(None, 5, 10000)]        0         
_________________________________________________________________
embedding_105 (Embedding)    (None, 5, 10000, 64)      640000    
_________________________________________________________________
conv2d_102 (Conv2D)          (None, 5, 10000, 32)      18464     
=================================================================

我想做嵌入将稀疏的 10000x5 张量转换为密集的 64x5 张量。显然这不能按预期工作,所以我的问题是:为什么下一层的形状不是(None, 5, 64, 32)而不是 (None, 5, 10000, 32)?如何实现压缩?

标签: tensorflow2.0shapeskeras-layerembedding

解决方案


推荐阅读