- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在以 GAE 为优势实现 PPO。以下代码是我根据OpenAI的基线实现计算GAE和返回的方式。
advantages = np.zeros_like(rewards)
last_adv = 0
for i in reversed(range(len(rewards))):
delta = rewards[i] + nonterminals[i] * self._gamma * values[i+1] - values[i]
advantages[i] = last_adv = delta + nonterminals[i] * gamma * lam * last_adv
returns = advantages + values[:-1]
advantages = normalize(advantages) # normalize advantages
值得一提的是 values
比 rewards
等其他数组多了一个元素,因此 values[-1]
可以被用作额外的下一个状态。然而,这种实现的表现比下面给出的简单归一化返回和优势要差得多
returns = rewards
next_return = 0
for i in reversed(range(len(rewards))):
returns[i] = rewards[i] + nonterminals[i] * gamma * next_return
next_return = returns[i]
# normalize returns and advantages
values = normalize(values[:-1], np.mean(returns), np.std(returns))
advantages = normalize(returns - values)
returns = normalize(returns)
在不改变任何其他东西的情况下,上述实现在gym
环境LunarLanderContinuous-v2
中不断地达到270+
的平均分数。另一方面,GAE 实现的得分永远不会超过 100
。请参见下图的示例,其中更好的一个是使用规范化实现运行的
我的实现有什么问题?
另外,这里是normalize
def normalize(x, mean=0., std=1., epsilon=1e-8):
x = (x - np.mean(x)) / (np.std(x) + epsilon)
x = x * std + mean
return x
最佳答案
您计算优势的代码似乎是正确的。 normalize
有什么作用?通常您标准化您的数据,这意味着您减去它的平均值并除以它的标准偏差。我问是因为在您的代码的第二部分中,您将返回的均值和标准差传递给函数 normalize
,而在第一部分中您没有。
此外,为什么要在代码的第二部分使用 returns
规范化 values
?我觉得很奇怪。
最后,如何训练 V 功能? (我假设 values
包含 V 值)。我发现学习如下
for epoch in range(epochs_v):
v_values = ... # compute your values using V
a_values = ... # compute A as in your code
target_values = v_values + a_values # generalized Bellman operator
# optimize V on your dataset with minibatches and ADAM
比“一次性拟合”效果更好
v_values = ... # compute your values using V
a_values = ... # compute A as in your code
target_values = v_values + a_values # generalized Bellman operator
# fit V to target_values
关于python - GAE : Why does GAE perform worse than normalized return and advantages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54536452/
在 Advantage 中进行备份时,我们只想备份一些包含一些结构数据的表。这些表可能会在数据库更新中更改,但大多数表不会。其他表包含大量的 blob 数据:可能有 10 多场演出。 如果数据库更新出
我在 Advantage Database SQL 中遇到了一个简单的问题。 我有 M/D/YYYY 格式的日期,想将它们转换为 MM/DD/YYYY。通常在 SQL Server 中我只会使用 co
从这里安装 V10 64 位驱动程序后 http://devzone.advantagedatabase.com/dz/content.aspx?key=20&Release=15在 64 位 Win
create table WEBLOG ( ORDERNO CHAR(9) NOT NULL, USERNAME CHAR(50) NOT NULL, ACTION CHAR(255) NOT NUL
我刚刚在安装 xcode 5 后第一次打开了一个 Storyboard。(通常我会打开一个带有 Storyboard的选项卡。显然 xcode 对此有所不同。现在我打开了它。)然后我被问到是否要转换
在 FoxPro 应用程序运行时使用 Advantage Local Server .Net 提供程序更新 DBF 文件是否安全,该应用程序也可能正在访问 DBF 文件?即 Advantage 是否负
如何使用 Advantage ODBC 或 OLEDB 创建从 Sql Server 到 .dbf 表的链接服务器? 最佳答案 您可以使用 OLE DB 或 ODBC 驱动程序。我通常使用 OLE D
如何使用 Advantage ODBC 或 OLEDB 创建从 Sql Server 到 .dbf 表的链接服务器? 最佳答案 您可以使用 OLE DB 或 ODBC 驱动程序。我通常使用 OLE D
我正在创建一个在 Advantage 数据库服务器上运行的 Web 应用程序,这不是我个人选择的武器,但这是公司使用的。 我有几个最终用户需要能够查看的大列表,但是我似乎无法找到一种在 SQL 中翻阅
所以我可以调用sp_ModifyDatabase( 'LOGINS_DISABLED','False' )修改LOGINS_DISABLED的状态,但我找不到您如何检查设置的当前状态。有谁知道那在哪里
将主键添加到现有生产数据库的语法是什么?我继承了一个没有为任何东西设置主键的数据库,我需要在每个表上有一个主键才能将我的 ORM 用于应用程序。 我尝试谷歌搜索无济于事,Advantage 的文档并不
我可以很容易地找到我正在使用的客户端版本,但我如何才能找到服务器版本? 有一个AdsMgGetInstallInfo ace 函数和相应的存储过程sp_mgGetInstallInfo . 这些是否需
我无法在我的程序的多个实例中打开某个表。发生的事情是我试图让用户打开并用旧表(不包含在数据字典中)替换当前表(数据字典的一部分 - FileForm.ImagesTable)。它适用于程序的一个实例,
我有一个与优势数据库配合使用的 Windows 服务,偶尔会进行一些 http 调用。在极少数情况下,这些调用可能会很长。调整我的数据库连接超时。我没有使用数据模块或任何东西。只需手动创建连接即可。
我的 Advantage 数据库中有类似的内容:- drop table #test; create table #test (x cichar(50)); insert into #test (x)
我保留了一个 Advantage TAdsConnection 对象池,并根据请求分发它们。有时我会收到一个失败信息,导致 6610 错误,我假设是因为它处于空闲状态并且连接被重置。我可以运行任何旧查
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 6 年前。 Improve this ques
我希望使用 DATEPART 查询 Sybase Advantage 数据库服务器。我收到一条错误消息,指出以下“未找到标量函数:datepart”。是否有另一个具有类似功能的函数?我正在寻找约会的季
我正在尝试使用 Advantage .Net 数据提供程序从 Advantage 数据库中读取数据。当我执行我的应用程序时,出现以下错误: "Error 5175 the index was crea
首先我想说,我是Java编程和Sybase的新手。 我在连接 Sybase 数据库时遇到问题。 建立连接我已经完成: 安装advantage db的jdbc驱动; 将名为 CLASSPATH 的环境变
我是一名优秀的程序员,十分优秀!