credit.models.base_model
========================

.. py:module:: credit.models.base_model


Attributes
----------

.. autoapisummary::

   credit.models.base_model.logger


Classes
-------

.. autoapisummary::

   credit.models.base_model.BaseModel


Module Contents
---------------

.. py:data:: logger

.. py:class:: BaseModel

   Bases: :py:obj:`torch.nn.Module`


   Base class for all neural network modules.

   Your models should also subclass this class.

   Modules can also contain other Modules, allowing them to be nested in
   a tree structure. You can assign the submodules as regular attributes::

       import torch.nn as nn
       import torch.nn.functional as F


       class Model(nn.Module):
           def __init__(self) -> None:
               super().__init__()
               self.conv1 = nn.Conv2d(1, 20, 5)
               self.conv2 = nn.Conv2d(20, 20, 5)

           def forward(self, x):
               x = F.relu(self.conv1(x))
               return F.relu(self.conv2(x))

   Submodules assigned in this way will be registered, and will also have their
   parameters converted when you call :meth:`to`, etc.

   .. note::
       As per the example above, an ``__init__()`` call to the parent class
       must be made before assignment on the child.

   :ivar training: Boolean represents whether this module is in training or
                   evaluation mode.
   :vartype training: bool


   .. py:method:: concat_and_reshape(x1, x2)

      x1: upper-air variables with level dimensions.
      x2: surface variables.



   .. py:method:: reshape_only(x1)

      As in "concat_and_reshape", but for upper-air variables only.



   .. py:method:: split_and_reshape(tensor)


   .. py:method:: load_model(conf)
      :classmethod:



   .. py:method:: load_model_name(conf, model_name)
      :classmethod:



   .. py:method:: save_model(conf)


