如何获得与模型外部的conv1d层相同的卷积结果(使用np.convolve)?

时间:2019-01-20 08:28:36

标签: python keras

我试图了解我的模型在第一个卷积层(conv1d)中学到了什么,但没有使用keras,而是从模型中获取了滤波器的权重,并尝试使用np.convolve将其与输入向量进行卷积(),但结果却有所不同。

我用K.function(model,input,layernum)得到模型卷积结果, 和普通的卷积通过np.conolve(layer_weights,input)

这是我的模特

def basenet2(input_shape, output_shape):
    input = Input(shape=input_shape)
    norm = BatchNormalization()(input)
    conv1 = Conv1D(8, kernel_size=40, padding='same', use_bias=False)(input)
    activation1 = LeakyReLU(alpha=0)(conv1)
    maxpool1 = MaxPool1D(pool_size=POOL_SIZE, padding='same')(activation1)
    conv2 = Conv1D(16, kernel_size=20, padding='same', use_bias=False)(maxpool1)
    activation2 = LeakyReLU(alpha=0)(conv2)
    maxpool2 = MaxPool1D(pool_size=POOL_SIZE, padding='same')(activation2)
    conv3 = Conv1D(32, kernel_size=20, padding='same', use_bias=False)(maxpool2)
    activation3 = LeakyReLU(alpha=0)(conv3)
    maxpool3 = MaxPool1D(pool_size=POOL_SIZE, padding='same')(activation3)
    conv4 = Conv1D(32, kernel_size=5, padding='same', use_bias=False)(maxpool3)
    maxpool4 = MaxPool1D(pool_size=POOL_SIZE, padding='same')(conv4)
    activation4 = LeakyReLU(alpha=0)(maxpool4)
    flatten = Flatten()(activation4)
    dense1 = Dense(output_shape, activation='relu')(flatten)
    return Model(input, dense1)

我想从模型中获取过滤器宽度,并将其与输入向量进行卷积,并得到与前馈输入向量时得到的结果相同的结果。 也许conv1d定义错误?

0 个答案:

没有答案
相关问题