def make_q_func_with_optimizer():
    q_func = nn.Sequential(pfrl.nn.ConcatObsAndAction(), nn.Linear((obs_size + action_size), 400), nn.ReLU(), nn.Linear(400, 300), nn.ReLU(), nn.Linear(300, 1))
    q_func_optimizer = torch.optim.Adam(q_func.parameters())
    return (q_func, q_func_optimizer)
def make_q_func_with_optimizer():
    q_func = nn.Sequential(pfrl.nn.ConcatObsAndAction(), nn.Linear((obs_size + action_size), 400), nn.ReLU(), nn.Linear(400, 300), nn.ReLU(), nn.Linear(300, 1))
    q_func_optimizer = torch.optim.Adam(q_func.parameters())
    return (q_func, q_func_optimizer)