Как мне правильно изменить форму этого массива?Python

Программы на Python
Ответить
Anonymous
 Как мне правильно изменить форму этого массива?

Сообщение Anonymous »

Я пытаюсь создать агент RLearning, используя старое руководство ( Я исправил более раннюю ошибку, связанную со старой функцией шага в тренажерном зале, но не могу понять, как решить проблему с изменением формы. Если у кого-нибудь есть какие-либо советы, я буду очень признателен.
Я просмотрел документацию Numpy, чтобы узнать, смогу ли я решить эту ошибку, но не смог ее исправить. Также я просмотрел комментарии на YouTube, но, похоже, никаких исправлений нет. Я просмотрел аналогичный учебник и столкнулся с той же проблемой.
Мой код (я не включил код для DQNAgent, если он необходим, спрашивайте)
env = gym.make('CartPole-v1')
state_size = env.observation_space.shape[0]
action_size = env.action_space.n

batch_size = 32
n_episodes = 1001

# Stores the model
output_dir = './model_output/cartpole'
if not os.path.exists(output_dir):
os.makedirs(output_dir)```

agent = DQNAgent(state_size, action_size)

done = False
for e in range(n_episodes):
state = env.reset() # reset the state
print(state)
print([1, state_size])
state = np.reshape(state, [1, state_size])

for time in range(5000): # If the game lasts 5000 time steps
# env.render()

action = agent.act(state) # Get an action (0 - left, 1 - right)
# Early this will be random, but as time passes it will be more logical (Exploiting)
next_state, reward, done, truncated, _ = env.step(action)
reward = reward if not done else -10 # Penalize poor actions
next_state = np.reshape(next_state, [1, state_size])

agent.remember(state, action, reward, next_state, done)
state = next_state
if done: # To see how the agent performs if completed
print(f"Episode: {e}/{n_episodes}, score: {time}, e: {agent.epsilon:.2}")
break

if len(agent.memory) > batch_size: # Gives a chance for the agent to update
agent.replay(batch_size)

Также, если у кого-то есть другие хорошие ресурсы для изучения обучения с подкреплением, поделитесь. Заранее спасибо.
Изменить. Сообщение об ошибке:
Traceback (most recent call last):
File "C:\Users\josep\VS Code Files\Python Projects\RL_Gym\main.py", line 120, in
state = np.reshape(state, [1, state_size])
File "", line 200, in reshape
File "C:\Users\josep\VS Code Files\Python Projects\RL_Gym\venv\lib\site-packages\numpy\core\fromnumeric.py", line 298, in reshape
return _wrapfunc(a, 'reshape', newshape, order=order)
File "C:\Users\josep\VS Code Files\Python Projects\RL_Gym\venv\lib\site-packages\numpy\core\fromnumeric.py", line 54, in _wrapfunc
return _wrapit(obj, method, *args, **kwds)
File "C:\Users\josep\VS Code Files\Python Projects\RL_Gym\venv\lib\site-packages\numpy\core\fromnumeric.py", line 43, in _wrapit
result = getattr(asarray(obj), method)(*args, **kwds)
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.


Подробнее здесь: https://stackoverflow.com/questions/754 ... this-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»