Call-Function不符合类'Network'中基本方法的签名 - 构建A3C模型

2024-06-16 10:54:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试测试通过本教程提供的A3C模型: https://medium.com/tensorflow/deep-reinforcement-learning-playing-cartpole-through-asynchronous-advantage-actor-critic-a3c-7eab2eea5296

首先,由于算法不能识别所有的包(尽管已安装),我尝试用不同的方法来引用它们:

  • 从tensorflow导入keras(不起作用)
  • 从tensorflow.\u api.v1导入keras(工作)

现在我有了以下A3C机型的基本概念:

类ActorCriticModel(keras.模型)地址:

def __init__(self, state_size, action_size):                  
    super(ActorCriticModel, self).__init__()
    self.state_size = state_size
    self.action_size = action_size
    self.dense1 = layers.Dense(100, activation='relu')
    self.policy_logits = layers.Dense(action_size)
    self.dense2 = layers.Dense(100, activation='relu')
    self.values = layers.Dense(1)

def call(self, inputs):
    # Forward pass
    x = self.dense1(inputs)
    logits = self.policy_logits(x)

    v1 = self.dense2(inputs)
    values = self.values(v1)
    return logits, values

模型=ActorCriticModel()

提供套餐:

  • 从keras导入层(被识别为已用包)
  • 从keras.层导入输入(未被识别为已用包)

我目前面临的问题是,我的模型中的输入不是“类'Network'中基方法的匹配签名”。你知道吗

我该怎么解决这个问题?你知道吗

关于我使用的程序和API的版本:

  • Python 3.7.3版
  • 张量流1.13.1
  • 克瑞斯2.3.1

Tags: 模型selfsizelayerstensorflowactionkerasdense