keras TimeDistributed图层包装一个Lambda图层,其中包含多个不同大小的输入

时间:2018-05-01 18:59:50

标签: tensorflow keras

我编写了一个自定义转换函数,需要输入内核和偏差,然后使用Keras.layers.Lambda调用此函数。我的问题是输入x是5D张量而内核和偏差不是,但是我必须使用TimeDistributed层来包装这个Lambda层,所以我该怎么办? E.g。

def my_conv(input_var):
    inputs, input_kernel, input_bias = input_var
    activation = activation.get("sigmod")
    x = K.conv2d(inputs, input_kernel, strides=1)
    x = K.bias_add(x, input_bias)
    return activation(x)
def my_conv_shape(input_shape):
    input_shape, kernel_shape, bias_shape = input_shape
    return input_shape[:3] + bias_shape[-1:]

在另一个功能中我使用它:

def custom_conv(x, kernel, bias):
    """x: [batch_size, max_num, height, width, channel]
       kernel: [size, size, input_dim, filters]
       bias: [filers]
    """    
    x = KL.TimeDistributed(KL.Lambda(my_conv, output_shape=tmy_conv_shape), name="my_conv")([x, kernel, bias])

但我觉得这样做不行。

0 个答案:

没有答案