Масштабирование выходной сети актера до границ пространства действия в Keras Rl
Я пытаюсь реализовать DDPG из Keras RL и иметь следующую сеть актеров.
actor = Sequential()
actor.add(Flatten(input_shape=(1,) + env.observation_space.shape))
actor.add(Dense(16))
actor.add(Activation('relu'))
actor.add(Dense(16))
actor.add(Activation('relu'))
actor.add(Dense(16))
actor.add(Activation('relu'))
actor.add(Dense(nb_actions))
actor.add(Activation('linear'))
Тем не менее, я бы предпочел, чтобы выходной сигнал масштабировался в соответствии с заданным пространством действия среды спортзала для моей проблемы. env.action_space
,
https://pemami4911.github.io/blog/2016/08/21/ddpg-rl.html показывает это с помощью API tflearn, где они используют
def create_actor_network(self):
inputs = tflearn.input_data(shape=[None, self.s_dim])
net = tflearn.fully_connected(inputs, 400)
net = tflearn.layers.normalization.batch_normalization(net)
net = tflearn.activations.relu(net)
net = tflearn.fully_connected(net, 300)
net = tflearn.layers.normalization.batch_normalization(net)
net = tflearn.activations.relu(net)
# Final layer weights are init to Uniform[-3e-3, 3e-3]
w_init = tflearn.initializations.uniform(minval=-0.003, maxval=0.003)
out = tflearn.fully_connected(
net, self.a_dim, activation='tanh', weights_init=w_init)
# Scale output to -action_bound to action_bound
scaled_out = tf.multiply(out, self.action_bound)
return inputs, out, scaled_out
Какова эквивалентная команда для масштабирования выходного слоя в соответствии с моими требованиями?