def batchify(data, batch_size):
    """
    バッチサイズが4の場合：
    元の系列がこうなっているとする．
    tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13])
    モデルは4本ずつ食えるので4分割する（端数は捨てる）．
    tensor([[0, 1, 2],
            [3, 4, 5],
            [6, 7, 8],
            [9, 10, 11]])
    同一ステップで食われるべき要素がベクトルになるように転置する．
    tensor([[0, 3, 6, 9],   <-- 0ステップ目
            [1, 4, 7, 10],  <-- 1ステップ目
            [2, 5, 8, 11]]) <-- 2ステップ目
    """
    nbatch = data.size(0) // batch_size
    data = data.narrow(0, 0, nbatch * batch_size)  # 端数は捨てる．
    return data.view(batch_size, -1).t().contiguous()