더북(TheBook)

다음은 출력 결과에서 한글이 깨지는 현상을 방지하기 위한 코드를 작성합니다. 경로 변경 없이 그대로 사용해야 합니다.

코드 12-2 한글 깨짐 방지

from matplotlib import font_manager
font_fname = 'C:/Windows/Fonts/malgun.ttf'
font_family = font_manager.FontProperties(fname=font_fname).get_name()
plt.rcParams["font.family"] = font_family

DQN은 리플레이 메모리를 사용합니다. 리플레이 메모리에 에이전트가 관찰한 상태 전이(state transition)2, 상태, 행동 등을 저장하여 나중에 재사용합니다.

코드 12-3 리플레이 메모리

Transition = namedtuple('Transition',
                        ('state', 'action', 'next_state', 'reward')) ------ ①

class ReplayMemory(object): ------ ②
    def __init__(self, capacity):
        self.capacity = capacity
        self.memory = []
        self.position = 0

    def push(self, *args):
        if len(self.memory) < self.capacity:
            self.memory.append(None)
        self.memory[self.position] = Transition(*args)
        self.position = (self.position + 1) % self.capacity

    def sample(self, batch_size):
        return random.sample(self.memory, batch_size)

    def __len__(self):
        return len(self.memory)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.