human
Give me a the Python code you requested given the following:
I am working on the file "RL/CH 10.6_PyTorch_PG.ipynb".
The first task is:
10.6.3 메인 기능 구현
(4) 정책 경사 방법의 강화학습을 위한 수행 객체
이 코드는 파이썬의 클래스 기능을 이용해 강화학습 에이전트를 만듭니다. 에이전트는 환경과의 시행착오 과정을 통해 자신의 행동에 대한 정책을 점점 학습해 나갑니다. 그리고 여기서는 코드의 나열 순서가 아니라 코드의 동작을 이해하기 쉬운 순서대로 설명합니다. 클래스 멤버 함수가 없거나 함수 내부가 비어 있어도 실제 동작에는 필요한 코드가 있으니 코드 작성시는 전체 코드를 참조하기 바랍니다. 
<br>
에이전트 실행을 위한 멤버 함수 run()을 구현한다. run()은 외부에서 부르는 실행을 위한 멤버 함수입니다. 이 함수는 두개의 멤버 함수를 부릅니다. 
첫 번째가 한번의 에피소드를 수행하는 self.run_episode()입니다. 강화학습은 학습 과정에서 이 과정을 시행착오라고 합니다. 지도학습은 이미 만들어진 데이터를 통해 학습하는 경우가 일반적이기 때문에 시행착오 과정이 존재하지 않는 것이 대부분입니다. 만약 지도학습에서 데이터를 받아들이는 과정이 있다면 반드시 받아들인 각 데이터에 대해 레이블링 과정이 필요합니다. 이 레이블링은 주로 사람에 의해 이루어지기 때문에 데이터를 받아들이는 과정이 있다면 굉장히 비효율적으로 동작하게 됩니다.  
두 번째가 self.train_episode()가 담당하는 학습 과정입니다. 시행착오 과정에서 만들어진 경험 데이터를 통해 학습이 진행됩니다. 강화학습에서는 레이블 정보 대신에 리워드를 사용합니다. 리워드는 에피소드가 수행되는 과정에서 마지막 한번 또는 중간중간에 계속해서 구해질 수 있습니다. 한번의 에피소드안에 여러번의 반복이 시도가 됨으로 각 반복시점에 생성된 데이터는 다음 3가지로 구분할 수 있습니다. 
$${s_k, r_k, F^\mathrm{Done}_k |k=1..K_i}$$
여기서 $s_k$는 $k$회에서 상태, $r_k$는 $k$회에서 리워드, 그리고 $F^\mathrm{Done}_k$는 $k$회에서 완료 여부를 나타내는 플래그이다.
Can you write Python code for it?
assistant
#Here is the Python code you requested.

class PGNET_AGENT(PGNET): 
    def run(self, env):
        for ee in range(self.num_episode):
            self.run_episode(env, ee)
            self.train_episode(ee)