在角豆中使用点积

问题描述 投票:0回答:1

我经历了一些与点积相关的堆栈溢出答案,但找不到我的问题的答案。

我正在创建一个具有两个并行CNN的模型,它们得到不同的输入。我正在使用带有1个卷积层的简单CNN。特征提取后,我正在使用GolabalMaxPooling1D层。在每一侧,输出的形状均为(None, 256)

从两个合并层获得的结果使用点合并。当我实现点时,它会输出(None, 1)

我使用了点,以便合并两个模型中的要素时,具有最大值的要素得到增强,而具有最小值的要素被减小。

有没有一种方法可以在模型中使用点并将输出形状作为(None, 256)

以下是我建立模型的方式

# input 1

input1= layers.Input(shape=(600,), dtype='int32', name='model1')

embeded_sequence1 = layers.Embedding(10000, 32) (input1)

conv_layer1 = layers.Conv1D(NO_OF_CONV_FILTERS,NO_OF_CONV_SIZE)(embeded_sequence1 )

activ_layer1 = layers.Activation('relu')(conv_layer1 )

global_max_pool1 = layers.GlobalMaxPooling1D()(activ_layer1 )


# input 2 

input2 = layers.Input(shape=(600,), dtype='int32', name='model2')

embeded_sequence2 = layers.Embedding(10000, 32)(input2 )

conv_layer2 = layers.Conv1D(NO_OF_CONV_FILTERS,NO_OF_CONV_SIZE)(embeded_sequence2 )

activ_layer2 = layers.Activation('relu')(conv_layer2 )

global_max_pool2 = layers.GlobalMaxPooling1D()(activ_layer2 )


# perform fuse classification

dot_product = dot(inputs=[global_max_pool1, global_max_pool2], axes=1, normalize=False)

fc_layer_fuse = layers.Dense(256)(dot_product)
python deep-learning keras-layer dot fuse
1个回答
0
投票

因此,根据定义,两个向量ab之间的点积是标量:

enter image description here

实际上也称为标量积。因此,没有,您不可能使用两个向量的点积获得长度为256的向量。

[如果您要合并拉动层的两个结果向量,可以应用逐元素乘积(请参见multiplication),也可以取它们的平均值。

© www.soinside.com 2019 - 2024. All rights reserved.