В DQN прогнозируемое значение является отрицательным - PullRequest
0 голосов
/ 06 декабря 2018

В коде обучения DQN прогнозируемое значение имеет отрицательное значение, и обучение не может быть выполнено.входной размер = 2500, выходной размер = 2500 Структура сети такая.loss_bias - это матрица.Это процессия, где 1 может идти, а 0 - нет.

 def _build_network(self, h_size=10, l_rate=0.3):
    with tf.variable_scope(self.net_name):

        self._X = tf.placeholder(
            tf.float32, [None, self.input_size], name="input_x")

        W1 = tf.get_variable("W1", shape=[self.input_size, h_size],
                             initializer=tf.contrib.layers.xavier_initializer())

        layer1 = tf.nn.relu(tf.matmul(self._X, W1))

        W2 = tf.get_variable("W2", shape=[h_size, self.output_size],
                             initializer=tf.contrib.layers.xavier_initializer())

        self._Qpred = tf.matmul(layer1, W2)

    self._Y = tf.placeholder(shape=[None, self.output_size], dtype=tf.float32)

    loss_bias = self.adj_mat
    loss_bias = np.reshape(loss_bias, [1, self.input_size])

    loss_data = self._Y - self._Qpred

    loss_data = loss_data * loss_bias

    self._loss = tf.reduce_mean(tf.square(loss_data))

    self._train = tf.train.AdamOptimizer(
        learning_rate=l_rate).minimize(self._loss)

Обучение происходит каждые 10 эпизодов.

if episode % 10 == 0:
            for _ in range(50):
                minibatch = random.sample(replay_buffer, 10)
                loss, _ = ddqn_replay_train(mainDQN, targetDQN, minibatch)
            print("Loss: {}".format(loss))
            print("Episode: {} ".format(episode))
            sess.run(copy_ops)

Если вы выполните это после установки, предсказанноезначение будет отрицательным, а значение действия будет равно 0, поэтому обучение не будет выполнено.Ты можешь сказать мне, почему?Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...