Сигмоид Tensorflow продолжает насыщаться - PullRequest
0 голосов
/ 15 декабря 2018

поэтому у меня есть такой дизайн среды и вознаграждения, который я специально разработал, чтобы он был близок к -1, 0 и 1, поэтому (как мне сказали) сигмовидная кишка не будет насыщаться, также я довольно честно сохранил дизайн вознагражденияпростой с ок -1 и 1 вознаграждение за конечную цель.

, поэтому я использую DDPG и использую 250 нейронов (варьируется, тестирует много, но давайте придерживаться этого числа сейчас)для моего скрытого слоя.Lr = 0,001, объем памяти = 300, гамма = 0,9, эпсилон = 0,18.

, так что это моя сеть актеров:

    def _build_a(self, s, reuse=None, custom_getter=None):

        trainable = True if reuse is None else False
        with tf.variable_scope('Actor', reuse=reuse, custom_getter=custom_getter):
            net = tf.layers.dense(s, 250, activation=tf.nn.tanh, name='l1', trainable=trainable)
            a = tf.layers.dense(net, 3, name='a', trainable=trainable)

#            return tf.nn.softmax(a , name='scaled_a')
            return tf.nn.sigmoid(a, name='scaled_a')

и это моя критикующая сеть

def _build_c(self, s, a, reuse=None, custom_getter=None):

    trainable = True if reuse is None else False
    with tf.variable_scope('Critic', reuse=reuse, custom_getter=custom_getter):
        n_l1 = s.shape[1]
        w1_s = tf.get_variable('w1_s', [s.get_shape()[1], n_l1], trainable=trainable)
        w1_a = tf.get_variable('w1_a', [3, n_l1], trainable=trainable)
        b1 = tf.get_variable('b1', [1, n_l1], trainable=trainable)
        net = tf.nn.relu(tf.matmul(s, w1_s) + tf.matmul(a, w1_a) + b1)
        return tf.layers.dense(net, 1, trainable=trainable)  # Q(s,a)  

, как указано выше, мои награды составляют около -1 и 1, и мое состояние выглядит следующим образом (часть также помечена как hotecoded):

[ 0.          1.          0.         -0.57726974  0.45491466  2.04893833
 -0.7697888  -0.57952472 -0.57726974 -0.44017265 -0.94382348  1.38399613]

моя ошибка td очень низкая, так как я (думаю, причина i) все обработал заранее, в результате чего подвижный объем значений был низким.У кого-нибудь есть идея, почему моя сигмовидная кишка насыщается, это моя сеть или мое состояние, которое не хорошо?Мне бы очень хотелось знать, потому что все, что я до сих пор пробовал, не сработало.он либо насыщается до 1 действия (3 = action_bound) до 0,999, а остальные - около 0, либо сходится ко всем 0,999, а также у меня был прогон, в котором все пошло на 0. Кодирование в настоящее время в последних версиях Python и Tensorflow.

Заранее спасибо за ответ, это очень много значит для меня!

~ Jan

PS: Если я пропустил любую необходимую информацию, дайте мне знать.

...