Получение TypeError: Обязательный аргумент 'object' (поз. 1) не найден - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь создать спортивную среду, которая двигает мышь (очевидно, в виртуальной машине) ... Я не знаю много о классах, но должен ли быть аргумент для себя или чего-то еще ...?Кроме того, любые улучшения будут с благодарностью ...

Этот код в основном будет работать на ВМ, так что ... Я пытался удалить строку кода, но есть несколько строк, которые нене работает ... (я ужасно объясняю вещи)

Вот код:

class MouseEnv(Env):
    def __init__(self):
        self.ACC = 0
        self.reward = 0
        self.done = False
        self.reset()

    def step(self, action):
        try:
            self.action = action
            done = False

            if self.action == 1:
                pyautogui.click()
                self.reward += 0.2
            else:
                if self.ACC == 1:
                    self.action = min((self.action/100), 1) * 1920
                    self.prev_action = min((self.prev_action/100), 1) * 1080
                    self.reward += 0.4

                else:
                    self.ACC = 1
                    self.prev_action = self.action()
                    self.reset()
            screen = ImageGrab.grab()
            self.observation = np.array(screen)
        except:
            done = True
        return self.observation, self.reward, done, {}           
    def reset(self):
        self.observation = np.array()
        self.reward = 0
        self.done = 0
        return self.observation

И ошибка:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/rees/.local/lib/python3.6/site-packages/gym/envs/registration.py", line 171, in make
    return registry.make(id, **kwargs)
  File "/home/rees/.local/lib/python3.6/site-packages/gym/envs/registration.py", line 123, in make
    env = spec.make(**kwargs)
  File "/home/rees/.local/lib/python3.6/site-packages/gym/envs/registration.py", line 87, in make
    env = cls(**_kwargs)
  File "/home/rees/Desktop/gym-mouse/MouseGym/envs/mouse_env.py", line 12, in __init__
    self.reset()
  File "/home/rees/Desktop/gym-mouse/MouseGym/envs/mouse_env.py", line 41, in reset
    self.observation = np.array()
TypeError: Required argument 'object' (pos 1) not found

Ожидаемый результат:

Я ожидаю, что мышь будет двигаться в зависимости от ввода / действий агента, а наблюдение будет прямой трансляцией видео с экрана ...

1 Ответ

0 голосов
/ 16 февраля 2019

Проблема в том, что в вашей функции reset, когда вы пытаетесь инициализировать self.observation пустым пустым массивом, вы не передаете никакие аргументы np.array().У вас есть два варианта: передать пустой список функции:

self.observation = np.array([])

или использовать np.empty, что создаст пустой массив numpy:

self.observation = np.empty(0)
...