In H_0 you are applying torch.sigmoid on self.networks[i](input), which has already applied a sigmoid on the output, so you are squashing the output again, which might be unwanted.
Could you check it, please?
Besides that I can’t find any obvious issues, but can neither comment if this type of cell would work, so let us know how your experiments worked out.