Керас TimeDistributed слой обернуть лямбда-слой, где есть несколько разных размеров ввода - PullRequest
0 голосов
/ 01 мая 2018

Я пишу пользовательскую функцию conv, которая должна вводить ядро ​​и смещение, затем использую Keras.layers.Lambda для вызова этой функции. Моя проблема в том, что входной x является 5D-тензором, а ядро ​​и смещение - нет, но я должен использовать слой TimeDistributed, чтобы обернуть этот лямбда-слой, так как я могу это сделать? Э.Г.

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])

но я думаю, что таким образом не должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...