Actually looking at the code in the stack trace
     49         pooled_output = pooled_output.unsqueeze(0)
     50 
---> 51         pooled_output_1 = self.dropout_1(self.bn(pooled_output))

Looks like the pooled output was a 1D Tensor, and the unsqueeze added the extra dimension of size 1. In this case, is 16 supposed to be the batch size and you should have only one channel? If so, then you should unsqueeze dimension 1.