所以我正在尝试使用 DQN 代理,但是当我尝试构建 QNetwork 时,它会发出形状为 (50,50,7500) 而不是 (7500,) 的输出张量。我需要它成为后者。 我的输入规范 (observation_spec) 的形状为 (50,50,7500)。我尝试了 ChatGPT,但几个小时后就放弃了。我找不到搜索 StackOverflow 的解决方案,所以我将其发布在这里。
下面是我的代码:
def dense_layer(self, num_units):
return tf.keras.layers.Dense(
num_units,
activation=tf.keras.activations.relu,
kernel_initializer=tf.keras.initializers.VarianceScaling(
scale=2.0, mode='fan_in', distribution='truncated_normal'))
def _build_q_network(self):
dense_layers = [self.dense_layer(num_units) for num_units in [64,64]]
q_values_layer = tf.keras.layers.Dense(
7500,
activation=None,
kernel_initializer=tf.keras.initializers.RandomUniform(
minval=-0.03, maxval=0.03),
bias_initializer=tf.keras.initializers.Constant(-0.2))
q_net = sequential.Sequential(dense_layers + [q_values_layer])
return q_net
self.q_net = self._build_q_network()
print(self.q_net.compute_output_signature(self.observation_spec)) # returns TensorSpec(shape=(50, 50, 7500), dtype=tf.float32, name=None)