Я новичок в лямбда-выражениях Keras и мне нужно понять, как они работают.
Я хочу реализовать уравнение для Dueling DQN (вторая сеть). Вот изображение:

Я разделил свою сеть на две части - A и V. В моем случае часть A имеет 4 выхода (нейроны)и часть V имеет только один выход.
Теперь мне нужно реализовать уравнение из изображения (справа внизу).
Я пытался написать его, но я не знаю, правильно ли это.
x[0]
представляет четыре нейрона из части A
x[1]
представляет один нейрон из части V
На выходе должно быть 4 нейрона
x = y = Input(shape=(input_dims,))
y = Dense(256)(x)
y = Activation('relu')(y)
y = Dense(256)(x)
y = Activation('relu')(y)
v = Dense(1)(y)
a = Dense(n_actions)(y)
y = Lambda(lambda x: x[0] + x[1] - K.mean(x[0]), output_shape=(4,))([a, v])
model = Model(x, y)
model.compile(optimizer=Adam(lr=lr), loss='mse')
Эквивалент лямбда-функции - это цикл:
Q = numpy.zeroes((4,)) #output of neural nework
for i in range(4):
Q[i] = a[i] + v[0] - mean(A)
Правильно ли я это сделал или не понимаю лямбда-выражения в Керасе? Если я не правильно написал это уравнение, вы можете мне его объяснить?
Спасибо за ваши рекомендации!