2017-10-10 1 views
0

저는 파이썬에 조금 익숙하며 OpenAI에서 miniWOB로 작업하고 있습니다. 내 에이전트가 내 관찰 내용을 cv2로 인쇄하고 싶습니다. 그러나 실제로는 중요하지 않습니다. 내 문제는 내 "관측"을 위해 체육관에서받은 데이터 유형을 정확하게 알 수 없다는 것입니다. 그러나 나는 그것을 단순한 3D 차원 배열로 원합니다. 이 형식은 cv2를 사용하여 인쇄 할 수 있습니다. 그래서 아무도 내 < 클래스 '목록> 관찰을 변환 할 수 있습니다 : < 유형 nunpy.ndarray>? 나는 이미 관측 = np.asarray (관측)를 시도했다. 그러나이 에러를 얻었다. "mat data type = 17".<class 'list'>를 numpy.ndarray로 변환하십시오.

import cv2 
import random 
import gym 
import universe 
import go_vncdriver 
import numpy as np 
def main(): 
    env = gym.make('wob.mini.ClickTest-v0') 
    env.configure(remotes=1) # create one flashgames Docker container 
    observation = env.reset() 
    while True: 
     env.render() 
     x = 110 
     y = 270 

     action_n = [universe.spaces.PointerEvent(x, y, 1), universe.spaces.PointerEvent(x, y, 0), 
      universe.spaces.PointerEvent(x, y, 1)] 

     action_n = [action_n for ob in observation] 
     observation, reward_n, done_n, info = env.step(action_n) 

     observation = np.asarray(observation) #this one converts to nd array but then I got the mat data type = 17 error 
     if (observation != None): 
      print(type(observation)) 
      cv2.imshow('pong voor net', observation) 
      cv2.waitKey(0) 
      cv2.destroyAllWindows() 
main() 

나는이 나타납니다

나는이 유형으로 변환 할
[{'vision': array([[[0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0], 
    ..., 
    [0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0]], 

    [[0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0], 
    ..., 
    [0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0]], 

    [[0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0], 
    ..., 
    [0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0]], 

    ..., 
    [[0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0], 
    ..., 
    [0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0]], 

    [[0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0], 
    ..., 
    [0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0]], 

    [[0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0], 
    ..., 
    [0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0]]], dtype=uint8), 'text': []}] 

:

[[[144 72 17] 
[144 72 17] 
[144 72 17] 
..., 
[144 72 17] 
[144 72 17] 
[144 72 17]] 

[[144 72 17] 
[144 72 17] 
[144 72 17] 
..., 
[144 72 17] 
[144 72 17] 
[144 72 17]] 

[[144 72 17] 
[144 72 17] 
[144 72 17] 
..., 
[144 72 17] 
[144 72 17] 
[144 72 17]] 

답변

0

완전히 비트의 세계에 대해 잘 알고 있지만, 출력, 내가 것이다 기반하지 않음 관측치의 배열을 가지고 있다고 가정하면 (각 관측치는 하나만), 각 관측치는 dict로 구성됩니다. 다른 센서 입력도 가능할 수 있습니다. 그러나 예제에서는 가시적 인 관측 '시야'만 포함합니다 (예 : . 픽셀). 배열을 얻으려면 첫 번째 요소를 선택하고 "vision"요소를 추출해야합니다.

observation = np.asarray(observation[0]['vision']) 
+0

고마워요! 이 간단한 코드가 트릭을 만들었습니다. – lambotje

관련 문제