为什么我的 QNetwork 构建没有输出正确的形状?

问题描述 投票:0回答:0

所以我正在尝试使用 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)
python-3.x neural-network tensorflow2.0 reinforcement-learning dqn
© www.soinside.com 2019 - 2024. All rights reserved.