## 3 Proposed Method
### CNN Extraction  
The VGG16 doubles the number of convolutional channels after each pooling, which allows the network to retain more features. We continued this idea and doubled the number of convolution channels when building the neural network. The VGG16 initially uses 64 \(3\times 3\) convolution kernels for the first convolution layer. Based on the rich spectral information \begin{table}
\begin{tabular}{c c c} \hline \hline
**Net** & **CNN** & **GraphSAGE** \\ \hline Input Dimension & H \(\times\) W \(\times\) C & - \\ \hline \multicolumn{3}{c}{Random sampling} \\ \hline \multirow{3}{*}{Feature Extraction} & Conv3-5 \(\times\) 5 \(\times\) 256 & - \\  & Conv3-3 \(\times\) 3 \(\times\) 512 & - \\  & Conv3-1 \(\times\) 1 \(\times\) 1024 & - \\ \hline \multicolumn{3}{c}{Build Graph Data Structure} \\ \hline \multirow{3}{*}{Image Classification} & - & SAGEConv-512 \\  & - & BN1d-512 \\  & - & SAGEConv-256 \\  & & BN1d-256 \\ \hline \multicolumn{3}{c}{FC-1024} \\ \multirow{3}{*}{Multilayer Perceptron} & ReLU \\  & ReLU \\  & Dropout = 0.5 \\  & FC-Number of categories \\ \hline Output Dimension & C \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Network framework of SFFNet. Figure 2: SFFNet network structure. of hyperspectral images, we set the size of the convolution kernel in the first layer to 3 \(\times\) 3, and the number of output channels was 256. In order to comply with the VGG settings, we doubled the number of convolutional channels to 512 and 1024, respectively. The schematic diagram of feature extraction is as follows. In total, we set up three convolutional layers instead of the original 13 convolutional layers of the VGG, such as Figure 3. This was due to the fact that the VGG16 increases the depth of the network along with the difficulty in tuning the parameters. We wanted the model to have an advantage in reducing information loss in the part of feature extraction. Therefore, we reduced the number of network layers. To prevent the issue of inadequate depth affecting performance, we also omitted the pooling layer to reduce information loss. CNNs are usually classified into 1D, 2D, and 3D. We use the 2D convolutional neural network, which is the most commonly used in the field of computer vision. Its calculation formula is as follows:  
\[v_{ij}^{xy}=\sigma(b_{ij}+\sum_{m=0}^{M_{\rm{i}}-1}\sum_{p=0}^{P_{\rm{i}}-1} \sum_{q=0}^{Q_{\rm{j}}-1}w_{ijm}^{pq}v_{(i-1)m}^{(x+p)(y+q)}) \tag{3}\]  
in Equation (3), \(P_{\rm{i}}\) and \(Q_{\rm{i}}\) denote the size of the convolution kernel of the \(i_{\rm{th}}\) convolutional layer. \(p\) and \(q\) are the corresponding indexes. \(m_{\rm{i}}\) denotes the amount of data in the convolution kernel in the \(i_{\rm{th}}\) convolution layer, and also denotes the depth of the feature map output for this convolution layer. Its corresponding index is denoted as \(m\). The position index is represented by \(x\) and \(y\). \(v_{\rm{ij}}^{xy}\) denotes the eigenvalue of the \(j_{th}\) feature map outputted by the \(i_{\rm{th}}\) convolutional layer at \((x,y)\). \(w_{\rm{ijm}}^{pq}\) denotes the weight of the mth set of convolutional kernels at \((p,q)\), which can be used to compute the \(j_{\rm{th}}\) feature map in the \(i_{\rm{th}}\) layer. \(b_{\rm{ij}}\) denotes the bias term of the \(j_{\rm{th}}\) feature map in the \(i_{\rm{th}}\) layer. Easily analyzed, \(\sigma\) is the nonlinear activation function for this network. Set the size of the input to \((C_{\rm{in}},H_{\rm{in}},W_{\rm{in}})\), and output to \((C_{\rm{out}},H_{\rm{out}},W_{\rm{out}})\). After one layer of conv2d, its output size can be calculated as Equations (4) and (5):  
\[H_{out}=\left[\frac{H_{in}+2\times padding[0]-dilation[0]\times(\textit{ kerne\_size}[0]-1)-1}{\textit{stride}[0]}\right]+1 \tag{4}\]  
\[W_{out}=\left[\frac{W_{in}+2\times padding[1]-dilation[1]\times(\textit{ kernel\_size}[1]-1)-1}{\textit{stride}[1]}\right]+1 \tag{5}\]  
where \(C\), \(H\), and \(W\) represent the Num of channels, Height, and Width of the data size, respectively.