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