【发布时间】:2020-04-06 11:13:55
【问题描述】:
我正在尝试复制神经网络。神经网络的架构是LSTM Model。 第一个输入是一个散列词,作为大小为 2^18 的二进制向量,使用嵌入层嵌入到可训练的 500 维分布式表示中。
每个批次元素的字数不同。在嵌入单词并应用 dropout 之后,我需要与特征向量连接,每个单词有 24 个特征。
问题是嵌入后的第一个输入具有不同维度的特征向量。嵌入词有一个维度(无、无、18、500),而特征向量有一个维度(无、无、24)。第一个 None elem 是批大小,第二个 None 是每个批 elem 的字数。
如何将嵌入词与特征向量连接起来?
下面是我的代码:
inputs = Input(shape=(None, 18,), dtype=np.int16, name="Inp1")
embbed_input = Embedding(input_dim=1, output_dim=500, input_length=18)
aux = embbed_input(inputs)
aux = Dropout(rate=self.dropout_rate)(aux)
inputs_feat = Input(shape=(None, 24,), dtype=np.float32, name="Inp2")
aux = concatenate([aux, inputs_feat], axis=2) #ValueError here
aux = Dense(units=600, activation="relu")(aux)
aux = Dense(units=600, activation="relu")(aux)
aux = Bidirectional(LSTM(units=400, return_sequences=True))(aux)
aux = Dropout(rate=self.dropout_rate)(aux)
aux = Dense(units=600, activation="relu")(aux)
aux = Dense(units=600, activation="relu")(aux)
aux = Dense(units=29, activation="sigmoid")(aux)
ValueError: A 'Concatenate' layer require inputs with matching shapes except for the concat axis. Got inputs shapes: [(None, None, 18, 500), (None, None, 24)]
【问题讨论】:
标签: python tensorflow keras concatenation embedding