TypeError: __init __ () получил несколько значений для аргументов 'осей' - PullRequest
1 голос
/ 08 мая 2020

Я хочу использовать механизм внимания со следующим кодом:

attention = Dot([decoder_outputs, encoder_outputs], axes=[2, 1])
attention = Activation('softmax')(attention)

context = Dot([attention, encoder_outputs], axes=[2,1])
decoder_combined_context = concatenate([context, decoder_outputs])

Но у меня есть это сообщение об ошибке, и я не знаю, как его исправить

Traceback (most recent call last):

    attention = Dot([decoder_outputs, encoder_outputs], axes=[2, 1])

TypeError: __init__() got multiple values for argument 'axes'

Я использую keras версии 2.3.1 с tenorflow версии 2.1.0

Ответы [ 2 ]

3 голосов
/ 08 мая 2020

Вы неправильно вызываете слой, он должен быть таким:

attention = Dot(axes=[2, 1])([decoder_outputs, encoder_outputs])

Ваш второй вызов Dot имеет ту же проблему, он следует тому же шаблону

2 голосов
/ 08 мая 2020

Первым аргументом Dot является вызывается axes:

tf.keras.layers.Dot(axes, normalize=False, **kwargs)

Итак, вам нужно решить, какое значение вы хотите передать axes: либо [decoder_outputs, encoder_outputs], либо [2, 1].

...