Как использовать наблюдение / вектор в качестве параметра? - PullRequest
0 голосов
/ 25 мая 2019

Я добавляю агента в гоночную игру, чтобы повернуть налево или направо на основании наблюдения.Я пытаюсь запустить код, но получаю сообщение об ошибке:

TypeError: невозможно умножить последовательность на не-int типа 'float'

Я пыталсячтобы сделать наблюдение_n плавающим в приведенном ниже коде,

import gym
import numpy

env = gym.make('flashgames.NeonRace-v0')
env.configure(remotes=1)
observation_n = env.reset()

while True:
    # agent below this line

    def NN(m1, m2, w1, w2, b):
        z = m1 * w1 + m2 * w2 + b
        return sigmoid(z)

    def sigmoid(x):
        return 1 / (1 + numpy.exp(-x))

    w1 = numpy.random.randn()
    w2 = numpy.random.randn()
    b = numpy.random.randn()

    choice = ""
    if NN(float(observation_n), float(observation_n), w1, w2, b) >= 0.5:
        choice = "ArrowRight"
    elif NN(float(observation_n), float(observation_n), w1, w2, b) < 0.5:
        choice = "ArrowLeft"

    # agent above this line

    action_n = [[('KeyEvent', 'ArrowUp', True), ('KeyEvent', choice, True)] for ob in observation_n]

    observation_n, reward_n, done_n, info = env.step(action_n)
    env.render()

Теперь я получаю эту ошибку,

Аргумент TypeError: float () должен быть строкой или числом,не «список»

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

...