在keras中使用点积

2024-09-28 03:21:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我浏览了两个与点积有关的堆栈溢出问题的答案,但找不到我的问题的答案

我正在创建一个带有两个并行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)

Tags: ofno模型nonelayers特征globaldot
1条回答
网友
1楼 · 发布于 2024-09-28 03:21:00

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

enter image description here

实际上,它也被称为标量积。因此,不,不可能用两个向量的点积得到长度为256的向量

如果您想要组合从拉动层得到的两个向量,您可以应用元素乘积(请参见multiplication),或者可以对它们进行平均

相关问题 更多 >

    热门问题