我是Keras lambda表达式的新手,我需要了解它们的工作原理。
我想实现对决DQN(第二网络)的排队。这是图片:
我将网络分为A和V两部分。在我的情况下,A部分有4个输出(神经元),而V部分只有一个输出。
现在我需要从图像(右下)实现方程式。
我尝试编写它,但是我不知道它是否正确。
x[0]
代表A部分中的4个神经元。
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')
lambda函数等效于以下循环:
Q = numpy.zeroes((4,)) #output of neural nework
for i in range(4):
Q[i] = a[i] + v[0] - mean(A)
我是否正确或不理解Keras中的lamba表达式?如果我写的方程式不正确,可以向我解释一下吗?
谢谢您的推荐!