Python 如何在4D输入中应用卷积1D在一维上多次

Python 如何在4D输入中应用卷积1D在一维上多次,python,tensorflow,keras,neural-network,conv-neural-network,Python,Tensorflow,Keras,Neural Network,Conv Neural Network,假设我在keras中有以下层: def _initialize_conv_layer(name): conv1 = Convolution1D(filters=1000, kernel_size=5, activation="relu", name="conv_" + name, p

假设我在keras中有以下层:

def _initialize_conv_layer(name):
    conv1 = Convolution1D(filters=1000,
                          kernel_size=5,
                          activation="relu",
                          name="conv_" + name,
                          padding="valid") 
    conv2 = GlobalMaxPooling1D(name="max_pool_" + name)
    conv3 = Activation("relu", name="act_" + name)
    conv4 = Dropout(rate=0.1, name="dropout_" + name)
    z = Dense(100, name="vector" + name)
    return conv1, conv2, conv3, conv4, z
以及:

此外:

其中:

  • 嵌入的\u序列
    是维度的嵌入:
    (批量大小,200100)
  • z1
    是维度的输出:
    (批量大小,100)
我的问题是如何在中应用相同的conv(而不是创建新的conv):

  • 尺寸的
    嵌入序列2
    (批量大小,50、200、100)
  • z2
    输出维度:
    (批量大小,50,100)
从某种角度来看,我想要的是对第二维度中的每一行应用相同的卷积(长度为50)

我的理解是,我应该在
Lambda
函数中应用
TimeDistributed
。或者可能需要对数据进行一些重塑?对不对

知道怎么做吗

def _get_vector(self, input_, conv1, conv2, conv3, conv4, z):
    i1 = conv1(input_)
    i2 = conv2(i1)
    i3 = conv3(i2)
    i4 = conv4(i3)
    vector_ = z(i4)
    return vector_
conv1, conv2, conv3, conv4, z = _initialize_conv_layer("message")
z1 = _get_vector(embedded_sequences, conv1, conv2, conv3, conv4, z)
z2 = _get_vector(embedded_sequences2, conv1, conv2, conv3, conv4, z)