В коде обучения 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, поэтому обучение не будет выполнено.Ты можешь сказать мне, почему?Спасибо.