поэтому у меня есть такой дизайн среды и вознаграждения, который я специально разработал, чтобы он был близок к -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: Если я пропустил любую необходимую информацию, дайте мне знать.