credit.models.crossformer_diffusion
===================================

.. py:module:: credit.models.crossformer_diffusion


Attributes
----------

.. autoapisummary::

   credit.models.crossformer_diffusion.crossformer_config


Classes
-------

.. autoapisummary::

   credit.models.crossformer_diffusion.ModelPrediction
   credit.models.crossformer_diffusion.CrossFormerDiffusion
   credit.models.crossformer_diffusion.ModifiedGaussianDiffusion


Functions
---------

.. autoapisummary::

   credit.models.crossformer_diffusion.exists
   credit.models.crossformer_diffusion.default
   credit.models.crossformer_diffusion.normalize_to_neg_one_to_one
   credit.models.crossformer_diffusion.extract
   credit.models.crossformer_diffusion.identity
   credit.models.crossformer_diffusion.create_model
   credit.models.crossformer_diffusion.create_diffusion


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

.. py:function:: exists(x)

.. py:function:: default(val, d)

.. py:function:: normalize_to_neg_one_to_one(img)

.. py:function:: extract(a, t, x_shape)

.. py:function:: identity(t, *args, **kwargs)

.. py:class:: ModelPrediction

   Bases: :py:obj:`tuple`


   .. py:attribute:: pred_noise


   .. py:attribute:: pred_x_start


.. py:class:: CrossFormerDiffusion(self_condition, *args, **kwargs)

   Bases: :py:obj:`credit.models.crossformer.CrossFormer`


   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:attribute:: dim


   .. py:attribute:: self_condition


   .. py:attribute:: time_mlp


   .. py:method:: forward(x, timestep, x_self_cond=False)


.. py:class:: ModifiedGaussianDiffusion(*args, **kwargs)

   Bases: :py:obj:`denoising_diffusion_pytorch.GaussianDiffusion`


   .. py:attribute:: channels


   .. py:attribute:: history_len


   .. py:method:: forward(img, *args, **kwargs)


   .. py:method:: p_losses(x_start, t, noise=None, offset_noise_strength=None)


   .. py:method:: model_predictions(x, t, x_self_cond=None, clip_x_start=False, rederive_pred_noise=False)


   .. py:method:: p_mean_variance(x, t, x_self_cond=None, clip_denoised=True)


   .. py:method:: p_sample(x, t: int, x_self_cond=None)


   .. py:method:: p_sample_loop(shape, return_all_timesteps=False)


   .. py:method:: sample(batch_size=16, return_all_timesteps=False)


.. py:function:: create_model(config)

   Initialize and return the CrossFormer model using a config dictionary.


.. py:function:: create_diffusion(model, config)

   Initialize and return the Gaussian Diffusion process.


.. py:data:: crossformer_config

