# End-to-End Underwater Acoustic Communication Based on Autoencoder with Dense Convolution
## 3 Dense-Convolutional-Autoencoder-Based UWA FBMC Communications System  
### Network Structure  
An autoencoder network [23] is a deep learning model proposed to reconstruct the input signal within a reasonable error range. In a perfect case, the output signal is completely consistent with the input signal. The idea coincides with the purpose of underwater communication. An autoencoder network can be structurally divided into encoder and decoder networks. The encoder network compresses the high-dimensional input information to a low-dimensional abstract representation by extracting the sample features to achieve dimension reduction and the compression of data. The decoder network maps low-dimensional abstract data into desired outputs to reproduce the input samples. The traditional autoencoder network is mostly constructed based on fully connected (FC) layers. When the input is a long sequence, the number of neuron nodes at each layer increases, and the network complexity increases accordingly. A convolutional autoencoder network uses convolutional layers and pooling layers to replace fully connected layers, and it reduces training parameters and increases network throughput by means of a partial connection mode and weight sharing mechanism of convolutional layers. The structure of the Conv1D autoencoder network is shown in Figure 2.  
The coding process of a Conv1D autoencoder network can be expressed as  
\[O_{k}=g(X\otimes W_{k}^{e}+b_{k}^{e}) \tag{8}\]  
where \(g(\cdot)\) is the activation function, \(X\) is the input volume and \(W_{k}^{e}\) and \(b_{k}^{e}\) are the weights and biases of the convolutional kernel at the \(k-\)th layer of the encoder network, respectively. \(\otimes\) stands for the convolutional operation, \(O_{k}\) is the abstract features extracted by the \(k-\)th convolutional layer of the encoder network. The \(k\) compression features generated by the coding network are eventually sent to the decoding network to reconstruct the  
Figure 2: Convolutional autoencoder network structure.  
input signal. The decoding process of a convolutional autoencoder network can be written as a reverse process  
\[\hat{X}=g\Big{(}O_{d}\otimes W_{k}^{d}+b_{k}^{d}\Big{)} \tag{9}\]  
where \(W_{k}^{d}\) and \(b_{k}^{d}\) denote the weight and bias of the \(k-\)th convolutional kernel in the decoder network, respectively. The Sigmoid function \(f(z)=1/(e^{-z}+1)\) is used as the activation function for the output layer to map the predicted values to the interval \([0,1]\). When \(\hat{X}\geq 0.5\), \(\hat{X}=1\), and when \(\hat{X}<0.5\), \(\hat{X}=0\), which caters to the binary input bit stream.  
In addition, the dense connection is adopted between convolutional layers, which is constructed as a Dense-Net module, to further improve feature learning efficiency. This feature reuse method can guarantee the accuracy of prediction without relying too much on the kernel size. The input to each layer is derived from the output mapping features of all layers before the current layer, and the output of the current layer is used as the input for each layer follows. The output characteristics of all previous layers are concatenated and delivered on the channel-wise dimension, as depicted in Figure 3.  
Assuming the Dense-Net module has \(L\) layers, the output of layer \(l-\)th can be expressed as [24]  
\[Z^{l}=g\Big{(}Z^{l-1},Z^{l-2},\ldots Z^{l-L}\Big{)} \tag{10}\]  
where \(Z^{l}\) denotes the output features at layer \(l\) and \(L\) is the depth of dense connections.