将2个具有不同尺寸的tensorflow cnn层相乘以引起注意cnn时出错 [英] Error in multiplying 2 tensorflow cnn layers with different dimensions for attention cnn
本文介绍了将2个具有不同尺寸的tensorflow cnn层相乘以引起注意cnn时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想将2个cnn层的输出相乘(找到点积)。不幸的是,两者都有不同的尺寸。谁能帮忙调整张量的大小?
I wanted to multiply(find dot product) the output from 2 cnn layers. Unfortunately both have different dimensions. Can any one help with resizing of the tensors?
我的基本模型是
model_base = Sequential()
# Conv Layer 1
model_base.add(layers.SeparableConv2D(32, (9, 9), activation='relu', input_shape=input_shape))
model_base.add(layers.MaxPooling2D(2, 2))
# model.add(layers.Dropout(0.25))
# Conv Layer 2
model_base.add(layers.SeparableConv2D(64, (9, 9), activation='relu'))
model_base.add(layers.MaxPooling2D(2, 2))
# model.add(layers.Dropout(0.25))
# Conv Layer 3
model_base.add(layers.SeparableConv2D(128, (9, 9), activation='relu'))
model_base.add(layers.MaxPooling2D(2, 2))
# model.add(layers.Dropout(0.25))
model_base.add(layers.Conv2D(256, (9, 9), activation='relu'))
# model.add(layers.MaxPooling2D(2, 2))
# Flatten the data for upcoming dense layer
#model_base.add(layers.Flatten())
#model_base.add(layers.Dropout(0.5))
#model_base.add(layers.Dense(512, activation='relu'))
print(model_base.summary())
图层输出提取第2层和第6层并尝试乘法
output from layer 2 and layer 6 are taken and tried multiplication
c1 = model_base.layers[2].output
c1 = GlobalAveragePooling2D()(c1)
p=np.shape(c1)
c3 = model_base.layers[6].output
c3 = GlobalAveragePooling2D()(c3)
x = keras.layers.multiply([c1, c3])
由于两者的尺寸不同,因此会出现错误。我将如何相乘?
Getting error since both are of different dimensions. How will I multiply ?
推荐答案
为了计算乘法,您必须具有两个维数相同的张量。这是一种可能(遵循您的model_base结构):
in order to compute multiplication, u have to have two tensors with the same dimensionality. here a possibility (following your model_base structure):
c1 = model_base.layers[2].output
c1 = GlobalAveragePooling2D()(c1)
c3 = model_base.layers[6].output
c3 = GlobalAveragePooling2D()(c3)
c3 = Dense(c1.shape[-1])(c3)
x = Multiply()([c1, c3])
这篇关于将2个具有不同尺寸的tensorflow cnn层相乘以引起注意cnn时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文