This is a follow up to the question I asked previously 7 a week ago. Thanks to @ptrblck, I followed his advice on following Approach 2 in my question and I am getting better results. However, there still seems to be a few issues.
Here’s just a quick intro: I am training an autoencoder for a multiclass classification problem where I transmit 16 equiprobable messages and send them through a denoising autoencoder to receive them. I am trying to implement the result (modification of Fig. 3b) in this paper, to be specific: Please refer to Fig. 2 in https://arxiv.org/pdf/1702.00832.pdf 8 for the model.
Please have a look at my code here: https://gist.github.com/kirtyvedula/9698a7a728d1484b3bffb0394c1191d7 26
I have the following questions.The code runs fine, but it is very sensitive to the number of training and test examples I provide, batch size and learning rate. And I am also having problems with running it on a GPU (NVIDIA 1060 Ti). I have a Keras implementation which works perfectly. (I can upload it if necessary). PyTorch gives me weird issues. For example, it gives me “better” results or overcompensates something. Foe example, the errors go down way too low, which is not the scenario at all.
Eb/N0: 0.0 | test BLER: 0.1104
Eb/N0: 0.5 | test BLER: 0.0932
Eb/N0: 1.0 | test BLER: 0.0752
Eb/N0: 1.5 | test BLER: 0.0611
Eb/N0: 2.0 | test BLER: 0.0504
Eb/N0: 2.5 | test BLER: 0.0389
Eb/N0: 3.0 | test BLER: 0.0312
Eb/N0: 3.5 | test BLER: 0.0222
Eb/N0: 4.0 | test BLER: 0.0162
Eb/N0: 4.5 | test BLER: 0.0121
Eb/N0: 5.0 | test BLER: 0.0082
Eb/N0: 5.5 | test BLER: 0.0058
Eb/N0: 6.0 | test BLER: 0.0031
Eb/N0: 6.5 | test BLER: 0.0023
Eb/N0: 7.0 | test BLER: 0.0012
Eb/N0: 7.5 | test BLER: 0.0007
Eb/N0: 8.0 | test BLER: 0.0002
Eb/N0: 8.5 | test BLER: 0.0001
Eb/N0: 9.0 | test BLER: 0.0000
Eb/N0: 9.5 | test BLER: 0.0000
Eb/N0: 10.0 | test BLER: 0.0000
Eb/N0: 10.5 | test BLER: 0.0000

Sorry if these are too many details. Those are just boilerplate digital communications stuff. Please have a look at the general flow of the program and see if I am doing something wrong here.

Do the training and testing loop make sense?
Do the choices of batch size, number of training and test examples
Am I printing the right losses? I checked @ptrblck’s suggestion last time and it was not an overflow problem.

Any ideas would be most welcome. Thank you!