py_environment“time_step”与“time_step_spec”不匹配

2024-03-17

我通过 tf 代理创建了一个自定义 py 环境。但是我无法使用 py_policy.action 验证环境或在其中采取步骤 我对 time_step_specs 中排除的内容感到困惑

我尝试通过 tf_py_environment.TFPyEnvironment 转换为 tf_py_environment 并成功地使用 tf_policy 采取行动,但我仍然对其中的差异感到困惑。

import abc
import numpy as np
from tf_agents.environments import py_environment
from tf_agents.environments import tf_environment
from tf_agents.environments import tf_py_environment
from tf_agents.environments import utils
from tf_agents.specs import array_spec
from tf_agents.environments import wrappers
from tf_agents.trajectories import time_step as ts
from tf_agents.policies import random_tf_policy
import tensorflow as tf
import tf_agents

class TicTacToe(py_environment.PyEnvironment):
   def __init__(self,n):
    super(TicTacToe,self).__init__()
    self.n = n
    self.winner = None
    self._episode_ended = False
    self.inital_state = np.zeros((n,n))
    self._state = self.inital_state
    self._observation_spec = array_spec.BoundedArraySpec(
        shape = (n,n),dtype='int32',minimum = -1,maximum = 1,name = 
'TicTacToe board state spec')
    self._action_spec = array_spec.BoundedArraySpec(
        shape = (),dtype = 'int32', minimum = 0,maximum = 8, name = 
'TicTacToe action spec')

def observation_spec(self):
    return self._observation_spec

def action_spec(self):
    return self._action_spec

def _reset(self):
    return ts.restart(self.inital_state)

def check_game_over(self):
    for i in range(self.n):
        if (sum(self._state[i,:])==self.n) or 
(sum(self._state[:,i])==self.n):
            self.winner = 1
            return True

        elif (sum(self._state[i,:])==-self.n) or 
    (sum(self._state[:,i])==-self.n):
            self.winner = -1
            return True

    if (self._state.trace()==self.n) or 
(self._state[::-1].trace()==self.n):
        self.winner = 1
        return True
    elif (self._state.trace()==-self.n) or (self._state[::-1].trace()==- 
   self.n):
        self.winner = -1
        return True

    if not (0 in self._state):
        return True

def _step(self,action):
    self._state[action//3,action%3]=1
    self._episode_ended = self.check_game_over

    if self._episode_ended==True:
        if self.winner == 1:
            reward = 1
        elif self.winner == None:
            reward = 0
        else:
            reward = -1
        return ts.termination(self._state,dtype = 'int32',reward=reward)
    else:
        return ts.transition(self._state,dtype = 'int32',reward = 
0.0,discount = 0.9)

env = TicTacToe(3)
utils.validate_py_environment(env, episodes=5)

这是我得到的错误:

ValueError Traceback(最近一次调用最后一次) 在 ----> 1 utils.validate_py_environment(env, Episodes=5)

C:\Users\bzhang\AppData\Local\Continuum\anaconda3\lib\site-packages\tf_agents\environments\utils.py 在 validate_py_environment(环境,情节) 58 引发值错误( 59'鉴于time_step: %r 与预期不符time_step_spec:%r'% ---> 60(时间步长,时间步长规格)) 61 第62章 行动=random_policy.action(time_step).action

值错误:给定time_step: TimeStep(step_type=array(0), 奖励=array(0., dtype=float32), 折扣=array(1., dtype=float32), 观察=array([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]])) 与预期不匹配time_step_spec: TimeStep(step_type=ArraySpec(shape=(), dtype=dtype('int32'), name='step_type'),reward=ArraySpec(shape=(), dtype=dtype('float32'), name='reward '), 折扣=BoundedArraySpec(shape=(), dtype=dtype('float32'), 名称='折扣', 最小值=0.0, 最大值=1.0), 观察=BoundedArraySpec(shape=(3, 3), dtype= dtype('int32'), name='TicTacToe 棋盘状态规格', 最小值=-1, 最大值=1))


您的观察结果与规格不符,您需要通过dtype=np.int32到 np 数组以确保类型匹配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

py_environment“time_step”与“time_step_spec”不匹配 的相关文章

  • 如何从 DSpace 反馈页面的修改版本中获取引用页面(项目)的标题?

    如何从反馈页面的修改版本中获取项目的标题 就像 jspui 中的 推荐此项目 一样 我希望也能生成页面的结果网址 如下所示http example com feedback handle 123456789 123 http example
  • 在pygame中打印用户的输入

    我几乎已经完成了我正在为学校项目制作的一款游戏 但现在我在游戏的一小部分上遇到了困难 我能够获取用户的姓名并使用它来将其写入排行榜 csv 文件 但我想要这样做 以便无论用户键入什么 游戏都会将用户的输入打印到屏幕上 就像您键入时一样在搜索
  • 如何在Python中计算NTLM哈希值?

    如何在 python 中计算密码的 NTLM 哈希值 有任何库或示例代码吗 我想要它用 python 编写 NTLM 强力工具 如 Cain 和 Abel 它的使用其实非常简单hashlib here http docs python or
  • 如何从 Sass 样式表中仅导入变量和 mixin?

    我正在使用 Zurb Foundation 4 S CSS 框架 并且遇到了大量重复样式的问题 这是因为在每个文件中我 import foundation 中 Foundation 中的所有样式也会导入 规则body row button和
  • Visual Studio 2012 - 从解决方案资源管理器中隐藏文件夹?

    是否可以在 Visual Studio 2012 解决方案资源管理器窗口中隐藏文件夹 我有多个不打算使用的文件夹 文件 它们只是让界面变得混乱 而且很难找到东西 您可以切换 显示隐藏文件 但实际上无法隐藏任何文件 这似乎很不合逻辑 Exam
  • Plone - 在页面中何处存储图像和文件附件的最佳实践?

    我们正在使用 Plone 4 1 3 构建一个 Intranet 网站 并想知道是否有 Plone 最佳实践来存储附加到页面的文件和图像 我们的内联网更像是一个协作站点 用户可以在其中发布新闻项目和其他文章 因此 用户将插入图像 使用 Ti
  • Taskkill /f 不会终止进程

    当我从 VS 启动 VS 的实验实例进行调试并停止调试 有时直接从父 VS 时 zombile devenv exe 进程仍在运行 我无法杀死它 它保留了我的许多 dll 当我以管理员身份登录到这台 64 位 Win7 机器时 我希望能够终
  • 防止点击文件输入的标签打开文件浏览器

    我有一个用户可以上传图像的表单 我正在使用
  • 关于python中的struct.unpack()

    级别 初级 我目前正在使用原始套接字使用 python 来开发嗅探器 我有一个关于 struct 模块提供的 unpack 中使用的格式说明符的一般性问题 当我们使用此方法根据指定的格式说明符解包数据时 我见过很多嗅探器程序使用 unpac
  • 亚马逊产品 API - 寻找基本概述和信息

    最近使用 ebay API 后 我本以为从亚马逊请求信息会如此简单 但事实似乎并非如此 似乎没有一个很好的网页来解释基础知识 首先 该服务叫什么 我认为旧名称已被放弃 缩写词 AWS 随处可见 但这不是一个涵盖他们的云计算和其他 20 种服
  • 列出所有 Google 地图标记图像 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 您是否经常使用谷歌的图像标记或将其复制到您的服务器 我在哪里可以从谷歌获取可用标记的所有图像列表 图像列表 例如 var pinIcon
  • php 可以查询之前查询的结果吗?

    在某些语言 例如 ColdFusion 中 您可以对先前查询的结果集运行查询 是否可以在 php 中做类似的事情 以 MySQL 作为数据库 我有点想做 rs1 do query SELECT FROM animals WHERE type
  • 如何强制网站 DNS 刷新?

    我正在将我的 Web 应用程序移动到另一台服务器 并在接下来的几天内刷新 DNS 以指向新的 IP 位置 不幸的是 一些浏览器和 SO 保留了 DNS 缓存 这将使用户指向旧的 IP 位置 有些用户是新手 他们不会手动刷新 DNS 缓存 我
  • 如何将“手动创建”资源添加到cloudformation模板

    我最初在 AWS 中手动创建了所有资源 现在 我尝试使用 CloudFormation SAM 模板来创建所有新资源 有什么方法可以将我所有的旧 手动创建 资源转移到这个 CF 模板中 然后使用这个 CF 来修改那些旧资源 现在可以通过 A
  • Python PyAutoGUI 返回“ImageNotFoundException”,但“ except”不将其识别为异常

    在以前版本的 pyautogui 中 当找不到图像时 返回值为 None 所以我曾经用以下方式处理它except TypeError 但自从更新 版本 0 9 41 以来 它不起作用 因为它返回 ImageNotFoundException
  • 如何将浮点数限制为略低于限制?

    功能类似于numpy random uniform http docs scipy org doc numpy reference generated numpy random uniform html返回两个边界之间的浮点值 包括第一个边
  • 无法将参数 1 从 'v8::Local' 转换为 'const v8::String::Utf8Value

    我正在尝试运行以下两个命令 npm install npm audit fix 在VS Code中报如下错误时 error C2664 v8 String Utf8Value Utf8Value const v8 String Utf8Va
  • Tomcat 上的 JAX-WS Web 服务,无需 sun-jaxws.xml

    我试图在 Tomcat 上部署基于 JAX WS 的 Web 服务时尽量减少所需的配置 随着Servlet 3 0的引入 Tomcat 7 支持 web xml可以扔掉 但还是有sun jaxws xml This 博客文章 https w
  • “有选择地”与git合并

    我想要一个 git 存储库 其中有一个用于开发的分支和一个用于部署的分支 我有我的项目需要的几个配置和数据库文件 我希望部署分支不要为我的项目提供任何配置或数据库文件 但我希望将这些文件的版本保留在我的开发分支中以便能够进行测试 当将开发分

随机推荐

  • 在堆栈中使用“push”和“pop”

    我有一个作业要求我用随机变量填充堆栈并按 FILO 顺序将它们弹出 虽然我设法让它填满堆栈 但它似乎弹出了最后一个元素 而没有弹出任何其他元素 我不知道为什么 任何帮助 将不胜感激 include
  • 用于多摄像机录制和流媒体设置的软件和/或硬件解决方案

    简而言之 我需要一种方法来流式传输 或以其他方式播放 电影以及 3 到 4 个其他 显示角度 并且用户能够更改他们正在观看的流式传输 最终结果应该是一个带有其他角度链接 按钮的视频播放器 允许用户根据需要切换摄像机流 角度 这是一个例子 您
  • 在结构体中的 TR1 unordered_map 中定义哈希函数

    根据this https mikecvet wordpress com 2011 01 28 customizing tr1 unordered map hashing and equality functions 可以在 TR1 unor
  • dplyr 管道数据 - `.` 和 `.x` 之间的差异

    df1 lt data frame c Part Number 1 Part Number 2 Part Number 3 Julie c Measurement 1 33 34 33 Julie c Measurement 2 32 31
  • 如果已经有类了,为什么我应该使用接口作为 Angular 中的数据类型?

    我最近看了我老师的教程 他向我们展示了这段代码 并且他还说products数组类型为any 没有使用强类型的好处这是 TypeScript 的功能 所以它应该被定义为 INTERFACE 但我现在想知道 为什么他没有创建一个类 而 prod
  • 优缺点:Hibernate 与 EJB 3

    Hibernate 和 EJB3 相对而言有何优缺点 I found this https stackoverflow com questions 683660 ejb vs hibernate帖子 但它并没有真正解决我的问题 如果我对这两
  • 如何使用C#语言向数据库插入记录?

    我只是 C 的初学者 所以我需要太多帮助 现在的问题是我设计了一个 Windows 表单 其中有很多字段 如名字 姓氏 地址等 现在我想做的是 当我填写表单并单击插入按钮时 所有信息都会进入数据库 有谁知道这是怎么做到的吗 private
  • 如何将 mysqli_stmt_bind_param 用于整数、布尔值等

    我正在尝试使用此方法将参数绑定到其特定类型 mysqli stmt bind param mysqli stmt stmt 字符串类型 混合 var1 混合 我知道第二个参数是一个类型的字符串 其中 s is for strings d i
  • 背景不适用于 div,因为它应该

    我的路径有一个奇怪的问题 这个可以工作 在 Windows 上 div style background none div folder1 image gif 尽管如此 此页面的说法完全相反 不是第一个版本 而是第二个版本应该有效 背景不适
  • 如何在 Python 中将一个字符串附加到另一个字符串?

    如何有效地将一个字符串附加到另一个字符串 有没有更快的替代方案 var1 foo var2 bar var3 var1 var2 For handling multiple strings in a list see How to conc
  • 简化 semver 版本比较逻辑

    有标准的 npm semver 版本比较库 但我在这里有一些简单的逻辑来比较 semver 版本 const versionA 14 8 3 const versionB 15 1 1 const versionC 15 1 2 const
  • 为什么我的 iPhone 应用程序应该使用 Core Data?

    我正在开发我的第二个 iPhone 应用程序 对 Core Data 很好奇 这个项目的时间是有限的 我的总体时间也是有限的 我是唯一的开发人员 我感觉核心数据会很有用 但我无法清楚地解释为什么 请原谅以下混淆 应用程序需要从中央服务器检索
  • facet_wrap() + ggplot2() 中每个面的独立颜色渐变

    我正在努力为每个方面绘制渐变色标facet wrap 独立 数据太大 无法在这里发布 但这是我的代码 ggplot stack aes hour day geom tile aes fill percent colour white fac
  • 如何使用 HTML Agility Pack 修复格式错误的 HTML?

    我的 HTML 格式不正确 标签重叠 p word1 b word2 b p p word3word4 p 重叠也可以嵌套 如何使用 HTML Agility Pack HAP 将其转换为格式良好的 HTML 我正在寻找这个输出 p wor
  • echo $_GET["jsoncallback"] 时出错

    当我回显结果时 它是错误的 如何修复它 由于您没有准确地写出您想要执行的操作 因此我猜测您正在尝试返回 JS 回调函数将放置在文档中的 HTML 选项列表 尝试这个
  • 使用 gnuplot 用数据文件制作电影

    我确实有很多数据文件 他们看着像是 1 数据 2 数据 1000 dat 我想用这些文件按顺序绘制它们来制作一部电影 请问有人有什么想法吗 如果您能帮助我 我将非常高兴 ND 这里你需要两步 第一个是根据数据创建 jpeg 或 png 绘图
  • const_cast<> 的正确用法

    作为一个常见的规则 使用它通常被认为是一种不好的做法const cast lt gt 在 C 代码中 因为它揭示了 大多数时候 设计中的缺陷 虽然我完全同意这一点 但我想知道使用的情况是什么const cast lt gt is ok和唯一
  • 尝试在命令行中静默执行自解压 zip 文件

    我有这些自解压 zip 文件 我正在尝试在 2008 7 机器上远程解压它们 但它们以 exe 的形式出现 需要用户双击并选择提取位置 在 WinZip 支持网站上 他们说要使用 auto 标志 因此命令将如下所示 C deploy exe
  • 简单的udp代理解决方案

    我正在寻找可以代理我的 udp 数据包的解决方案 我有一个客户端向服务器发送 udp 数据包 它们之间的连接非常糟糕 导致大量数据包丢失 一种解决方案是使用一个新的代理服务器 它将所有数据包从客户端重定向到目标服务器 新的代理服务器与这两个
  • py_environment“time_step”与“time_step_spec”不匹配

    我通过 tf 代理创建了一个自定义 py 环境 但是我无法使用 py policy action 验证环境或在其中采取步骤 我对 time step specs 中排除的内容感到困惑 我尝试通过 tf py environment TFPy