Масштабирование выходной сети актера до границ пространства действия в Keras Rl - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь реализовать 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

Какая эквивалентная команда для масштабирования выходного слоя в соответствии с моими требованиями?

...