## 4 The Proposed CGAN Model Performance Evaluation  
We used Python version 3.6 to simulate the proposed CGAN model. The performance of the proposed CGAN model was evaluated based on the performance of the discriminator. Because CGAN uses min-max non-cooperative game, if the generator wins, then the discriminator loses. Therefore, the discriminator's performance not only evaluates the discriminator, but it also illustrates how much the generator could improve itself during the training phase. Note that the real data are not at all accessible to the generator, therefore the generator that is only allowed to learn from the gradients comes back from the discriminator via back propagation. Figure 6 shows the accuracy of the discriminator over 500 epochs. In the first 50 epochs, the discriminator could distinguish between random and real data. However, after that, the discriminator made mistakes in finding the random data sent from the generator. This illustrates the improvement of the generator in making data from noise which are similar to real data. At the same time, the discriminator was still successful in finding real data. However, in epoch 300, the CGAN model reached a converging point where the discriminator could not very well recognize the real data. At this point in time, and as shown in Figure 6, the accuracy of the discriminator is reduced to approximately 50%, which indicates that the discriminator randomly generates output labels. Therefore, the generator trained itself very well while using feedback from the discriminator, and finally the CGAN model converges at this point in time. CGANs with two and three hidden layers were separately considered and, for each, the accuracy and loss of the discriminator was evaluated using three batch sizes of 20, 40, and 60. Finally, Figures 7 and 8 present the results. Figure 7 shows the variation in the accuracy of the discriminator at the converging point of the CGAN for real and random data, while using two and three hidden layers and three different batch sizes. The best state for a CGAN is when the discriminator randomly makes labels [39]; therefore, the accuracy of the discriminator will be approximately 50% for both the real and random data. As far as this is concerned, and as Figure 7 shows, this has happened with 40 batch size and two hidden layers. At this state of the converged CGAN, the discriminator with 55% accuracy guesses whether the data are real or random. We use binary cross-entropy to calculate the loss of the discriminator. The best state is when the loss of the discriminator is at the lowest value for both real and random data. The loss of the discriminator for three hidden layers of 40 batch size is a good value like 0.65; however, the loss for random data is as high as 0.75, as shown in Figure 8. In other words, the discriminator has more faults in finding random data and performs better in recognizing real data. This is a green sign that indicates that the generator is well trained. Figure 6: The discriminator’s accuracy over time. However, as compared to the same batch size, but with two hidden layers, this is a hasty conclusion. Because, with the same batch size and two hidden layers, the loss values for real and random data are very close 0.68 and 0.69, respectively. These values show that the discriminator has almost the same performance in labeling the real and the random data. Therefore, we can say that the discriminator has an error in finding both the real data and the random data at a same level. This indicates that the generator is well trained in making the discriminator's mistakes. Figure 9 compares the training time that is required by the proposed CGAN to reach a converging point for two and three hidden layers using different batch sizes.