浮動小数の算術符号て大変だと思うけど……と思ったら
freq = torch.round(prob * 10000000).int() freq = torch.max(freq, freq.new_ones(freq.size())) freq = torch.cumsum(freq, -1)
と単に int にして range coder だった
1e-7 以下の確率のシンボルが出てきたら死ぬことになるが……出てこないということかな
遊びで回してたらたまにこれ起因で死んでた気がする