:py:mod:`mipcandy.sanity_check`
===============================

.. py:module:: mipcandy.sanity_check

.. autodoc2-docstring:: mipcandy.sanity_check
   :allowtitles:

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

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`SanityCheckResult <mipcandy.sanity_check.SanityCheckResult>`
     - .. autodoc2-docstring:: mipcandy.sanity_check.SanityCheckResult
          :summary:

Functions
~~~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`num_trainable_params <mipcandy.sanity_check.num_trainable_params>`
     - .. autodoc2-docstring:: mipcandy.sanity_check.num_trainable_params
          :summary:
   * - :py:obj:`model_complexity_info <mipcandy.sanity_check.model_complexity_info>`
     - .. autodoc2-docstring:: mipcandy.sanity_check.model_complexity_info
          :summary:
   * - :py:obj:`sanity_check <mipcandy.sanity_check.sanity_check>`
     - .. autodoc2-docstring:: mipcandy.sanity_check.sanity_check
          :summary:

API
~~~

.. py:function:: num_trainable_params(model: torch.nn.Module) -> int
   :canonical: mipcandy.sanity_check.num_trainable_params

   .. autodoc2-docstring:: mipcandy.sanity_check.num_trainable_params

.. py:function:: model_complexity_info(model: torch.nn.Module, example_shape: typing.Sequence[int]) -> tuple[float | None, float | None, str]
   :canonical: mipcandy.sanity_check.model_complexity_info

   .. autodoc2-docstring:: mipcandy.sanity_check.model_complexity_info

.. py:class:: SanityCheckResult
   :canonical: mipcandy.sanity_check.SanityCheckResult

   Bases: :py:obj:`object`

   .. autodoc2-docstring:: mipcandy.sanity_check.SanityCheckResult

   .. py:attribute:: num_macs
      :canonical: mipcandy.sanity_check.SanityCheckResult.num_macs
      :type: float
      :value: None

      .. autodoc2-docstring:: mipcandy.sanity_check.SanityCheckResult.num_macs

   .. py:attribute:: num_params
      :canonical: mipcandy.sanity_check.SanityCheckResult.num_params
      :type: float
      :value: None

      .. autodoc2-docstring:: mipcandy.sanity_check.SanityCheckResult.num_params

   .. py:attribute:: layer_stats
      :canonical: mipcandy.sanity_check.SanityCheckResult.layer_stats
      :type: str
      :value: None

      .. autodoc2-docstring:: mipcandy.sanity_check.SanityCheckResult.layer_stats

   .. py:attribute:: output
      :canonical: mipcandy.sanity_check.SanityCheckResult.output
      :type: torch.Tensor
      :value: None

      .. autodoc2-docstring:: mipcandy.sanity_check.SanityCheckResult.output

   .. py:method:: __str__() -> str
      :canonical: mipcandy.sanity_check.SanityCheckResult.__str__

.. py:function:: sanity_check(model: torch.nn.Module, input_shape: typing.Sequence[int], *, device: mipcandy.types.Device | None = None) -> mipcandy.sanity_check.SanityCheckResult
   :canonical: mipcandy.sanity_check.sanity_check

   .. autodoc2-docstring:: mipcandy.sanity_check.sanity_check
