Hello there, the model flow could be presented as follows:
CNN → multiply → pooling → linear → log_softmax
Speaking about multiplying: referring to the docs (link), pooling input could be 4d or 3d, but hence the ctc loss input has to be 3D, its better to first multiply dimensions, and then apply pooling to them - thus the relatively rough multiplication operation will be ‘smoothed’ by pooling.