인간 용어로 강화 학습: 현재 훈련 환경을 표시하는 방법, openai gym은 화면을 표시하지 않음, env.render()는 화면을 표시하지 않음, CartPole은 화면을 표시하지 않음

이전 버전의 gym에서는 env.render()를 호출하면 현재 화면이 직접 표시되지만 새 버전에서는 이 메서드가 유효하지 않습니다. 현재 환경과 교육 이미지를 표시하는 방법에는 여러 가지가 있습니다.

1. render_model = "인간"

env = gym.make("CartPole-v1", render_mode = "human")

디스플레이 효과:

 

질문:

이 설정에 따라 프로그램은 실행 중인 모든 화면을 출력합니다. 하지만 이 단계에서는 그림 렌더링에 시간이 걸리고 훈련 속도가 매우 느려지므로 문제가 발생합니다. 강화학습의 초기 단계는 시행착오를 겪는 부분인데, 당연히 모델의 시행착오를 매번 관찰하는 데 시간을 할애하고 싶지 않고, 대부분의 경우 우리가 관찰하고 싶은 훈련 단계를 관찰하고 싶어합니다. 이를 위해 다음 방법을 사용할 수 있습니다.

2. render_model = "rgb_array"

env = gym.make("CartPole-v1", render_mode = "rgb_array")

이 메소드는 env.render()가 rgb_array를 반환하도록 합니다. 이 rgb_array는 현재 단계의 환경 화면을 나타냅니다. 표시해야 할 경우 cv2를 사용하여 렌더링할 수 있습니다. 아래와 같은 방법:

# RGB 转化为BGR, cv2显示格式为BGR
img = cv2.cvtColor(env.render(), cv2.COLOR_RGB2BGR)

# 显示画面,test为窗口名称
cv2.imshow("test",img)

# 给cv2一定时间完成渲染,否则无法显示
cv2.waitKey(1)

디스플레이 효과는 다음과 같습니다.

 

추천

출처blog.csdn.net/weixin_49703503/article/details/129111907