Here’s my code 157 for an RNN-based classifier. It can configured to use GRU or LSTM, both uni- or bidirectional. This might help for your first question.
Regarding your data, given your shape of  [Batch, Channel, Height, Width], where is your time dimension? Or do you have a series of these spectrograms?