// read the kmeans closest and the least used memory
// TODO: for now we assume infinite memory, hence least used is the first free cell
read_vectors = []
pos = read_positions.squeeze().data.cpu().numpy()
for b in range(read_positions.size(0)):
read_vectors.append(T.stack([memory[b, p] for p in list(pos[b])], 0))
read_vectors = T.stack(read_vectors, 0)
return read_vectors, read_positions, read_weights