## 3 Experimental Verifications and Discussions  
### The Parameter and Method of System Training  
For deep learning, the training method is significant. The training in simulation is similar to that in Reference [17]. Before experiments on optical fiber, we performed an autoencoder with symmetrical neural networks in the simulation on the optical fiber system in the simulation (Figure 1a). The parameters used in the simulation are discussed in the following table. As shown in Figure 1, as in Reference [17], ANN used in the receiver is symmetrical with ANN used in the transmitter in simulation, so as to train the transmitter to adapt optical fiber channel model. The design of the simulation channel is mentioned in Reference [17].  
The process of simulation training is as follows: Binary Random Sequence created by Python is encoded into one-hot vector. One-hot vector is transmitted from the transmitter to the receiver across the simulation channel. After the ANN at the receiver, due to SoftMax, the output vector is probability distribution. The element with the greatest probability is considered to be the element most likely to be 1. Other elements are 0. Based on the concept of the autoencoder [13], the output vector after the autoencoder is equal to the input vector. Therefore, error emerges if the input vector is not equal to the output vector.  
In order to train the transmitter, we use the aforementioned loss function (Formula (3)) and Adam optimizer to reduce the loss. After training 10,000 steps, we test BER by verification set and observe the loss whether is less than \(1\times 10^{-3}\). If BER meets expectations, as in Reference [17], the transmitter is trained well.  
The whole procedure of training is as follows: After training a symmetrical autoencoder with neural network, we send the waveform through the neural network on the transmitter and the optical fiber channel, and then we send it to the improved transmitter of the Adaboost algorithm (Figure 1b) for training. During the experiment, the input vector and labels must correspond one-to-one. The simulation parameters is below, see Table 1.  
As an important point, the training process needs to set up mini-batch. Mini batch is usually the bigger, the better. The larger the batch size can be contained in the neural network and used as a training process, the better the training of classification accuracy is because it reduces the possibility of overfitting. Mini-batch is often the bigger, the better, but, after our training results, we found that the result is not the case. We tried to change the size of the mini-batch and obtain results. In the case of the different batch-size, we can see that, in fact, this will cause more changes in the loss value (the reason is that the more the data is put in, similarly is the loss doubled). The loss function is often very unstable when the mini-batch is bigger, and the fluctuation range of the loss function will be very large. The reason is that, when the matrix size of the input vector becomes larger, more changes will be caused. If the matrix size of the signal is not large enough, the loss is unable to converge under the same steps. It has a premise that the size of mini-batch includes all the possibilities of the information. Otherwise, the training model will cause an overfitting problem. However, the neural network is extremely sensitive to the regular changes of the input vector, but the unstable loss function caused by the large matrix size of your data should be avoided. We can select the batch-size which is suitable for the data size. Usually, choosing the batch-size close to the length of the signal is much more suitable than other sizes.