class_docstr: Extends `DeepNTPSNetwork` by implementing the output layer which
  converts the outputs from the base network into a smoothed mixture
  distribution. The components of the mixture are Gaussians centered around
  the observations in the context window. The mixing probabilities as well as
  the width of the Gaussians are predicted by the network.
  
  This mixture distribution represents the one-step-ahead forecast
  distribution. Note that the forecast can contain values not observed in the
  context window.
class_docstr_tok: ["Extends","`","DeepNTPSNetwork","`","by","implementing","the","output","layer","which","converts","the","outputs","from","the","base","network","into","a","smoothed","mixture","distribution",".","The","components","of","the","mixture","are","Gaussians","centered","around","the","observations","in","the","context","window",".","The","mixing","probabilities","as","well","as","the","width","of","the","Gaussians","are","predicted","by","the","network",".","This","mixture","distribution","represents","the","one-step-ahead","forecast","distribution",".","Note","that","the","forecast","can","contain","values","not","observed","in","the","context","window","."]
code: def __init__(self, *args, **kwargs):
      super().__init__(*args, **kwargs)
      modules = (
          []
          if self.dropout_rate > 0
          else [nn.Dropout(self.dropout_rate)]
      )
      modules += [
          nn.Linear(self.num_hidden_nodes[-1], self.context_length + 1),
          nn.Softplus(),
      ]
      self.output_layer = nn.Sequential(*modules)
      self.output_layer.apply(init_weights)
  
imports: from functools import partial
  from typing import Optional, Callable, List, Union
  import torch
  from torch import nn
  from torch.distributions import Categorical, MixtureSameFamily, Normal
  from gluonts.core.component import validated
  from gluonts.torch.distributions import DiscreteDistribution
  from .scaling import min_max_scaling, standard_normal_scaling
label_desc: Use image node_id 1 to create a new DeepNPTSNetworkSmooth object from inherited base classes: DeepNPTSNetwork with example: obj = DeepNPTSNetworkSmooth()