code: def bn_drop_lin(n_in:int, n_out:int, bn:bool=True, p:float=0., actn:Optional[nn.Module]=None):
      "Sequence of batchnorm (if `bn`), dropout (with `p`) and linear (`n_in`,`n_out`) layers followed by `actn`."
      layers = [nn.BatchNorm1d(n_in)] if bn else []
      if p != 0: layers.append(nn.Dropout(p))
      layers.append(nn.Linear(n_in, n_out))
      if actn is not None: layers.append(actn)
      return layerf bn_drop_lin(n_in:int, n_out:int, bn:bool=True, p:float=0., actn:Optional[nn.Module]=None):
      "Sequence of batchnorm (if `bn`), dropout (with `p`) and linear (`n_in`,`n_out`) layers followed by `actn`."
      layers = [nn.BatchNorm1d(n_in)] if bn else []
      if p != 0: layers.append(nn.Dropout(p))
      layers.append(nn.Linear(n_in, n_out))
      if actn is not None: layers.append(actn)
      return layers
docs: Sequence of batchnorm (if `bn`), dropout (with `p`) and linear (`n_in`,`n_out`) layers followed by `actn`.