我浏览了两个与点积有关的堆栈溢出问题的答案,但找不到我的问题的答案
我正在创建一个带有两个并行CNN的模型,它们得到不同的输入。我正在使用一个简单的CNN与1卷积层。在特征提取之后,我正在使用GolabalMaxPooling1D
层。
在每一侧,输出的形状为(None, 256)
使用点合并从两个池层获得的结果。当我实现dot时,它给出一个输出(None, 1)
我使用了dot,这样当两个模型的特征被合并时,具有最大值的特征被增强,而具有最小值的特征被减少
有没有一种方法可以将点用于模型并获得输出形状为(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)
因此,根据定义,两个向量a和b之间的点积是标量:
实际上,它也被称为标量积。因此,不,不可能用两个向量的点积得到长度为256的向量
如果您想要组合从拉动层得到的两个向量,您可以应用元素乘积(请参见multiplication),或者可以对它们进行平均
相关问题 更多 >
编程相关推荐