mnist_pytorch#
A cleanlab-compatible PyTorch ConvNet classifier that can be used to find label issues in image data. This is a good example to reference for making your own bespoke model compatible with cleanlab.
You must have PyTorch installed: https://pytorch.org/get-started/locally/
Functions:
| 
 | Downloads MNIST as PyTorch dataset. | 
| 
 | Downloads Sklearn handwritten digits dataset. | 
Classes:
| Basic Pytorch CNN for MNIST-like data. | |
| 
 | Wraps a PyTorch CNN for the MNIST dataset within an sklearn template | 
- cleanlab.experimental.mnist_pytorch.get_mnist_dataset(loader)[source]#
- Downloads MNIST as PyTorch dataset. - Parameters:
- loader ( - str (values:- 'train'or- 'test'- ).) –
 
- cleanlab.experimental.mnist_pytorch.get_sklearn_digits_dataset(loader)[source]#
- Downloads Sklearn handwritten digits dataset. Uses the last SKLEARN_DIGITS_TEST_SIZE examples as the test This is (hard-coded) – do not change. - Parameters:
- loader ( - str (values:- 'train'or- 'test'- ).) –
 
- class cleanlab.experimental.mnist_pytorch.SimpleNet[source]#
- Bases: - Module- Basic Pytorch CNN for MNIST-like data. - Methods: - forward(x[, T])- Defines the computation performed at every call. - __call__(*input, **kwargs)- Call self as a function. - add_module(name, module)- Adds a child module to the current module. - apply(fn)- Applies - fnrecursively to every submodule (as returned by- .children()) as well as self.- bfloat16()- Casts all floating point parameters and buffers to - bfloat16datatype.- buffers([recurse])- Returns an iterator over module buffers. - children()- Returns an iterator over immediate children modules. - cpu()- Moves all model parameters and buffers to the CPU. - cuda([device])- Moves all model parameters and buffers to the GPU. - double()- Casts all floating point parameters and buffers to - doubledatatype.- eval()- Sets the module in evaluation mode. - Set the extra representation of the module - float()- Casts all floating point parameters and buffers to - floatdatatype.- get_buffer(target)- Returns the buffer given by - targetif it exists, otherwise throws an error.- Returns any extra state to include in the module's state_dict. - get_parameter(target)- Returns the parameter given by - targetif it exists, otherwise throws an error.- get_submodule(target)- Returns the submodule given by - targetif it exists, otherwise throws an error.- half()- Casts all floating point parameters and buffers to - halfdatatype.- ipu([device])- Moves all model parameters and buffers to the IPU. - load_state_dict(state_dict[, strict])- Copies parameters and buffers from - state_dictinto this module and its descendants.- modules()- Returns an iterator over all modules in the network. - named_buffers([prefix, recurse])- Returns an iterator over module buffers, yielding both the name of the buffer as well as the buffer itself. - Returns an iterator over immediate children modules, yielding both the name of the module as well as the module itself. - named_modules([memo, prefix, remove_duplicate])- Returns an iterator over all modules in the network, yielding both the name of the module as well as the module itself. - named_parameters([prefix, recurse])- Returns an iterator over module parameters, yielding both the name of the parameter as well as the parameter itself. - parameters([recurse])- Returns an iterator over module parameters. - register_backward_hook(hook)- Registers a backward hook on the module. - register_buffer(name, tensor[, persistent])- Adds a buffer to the module. - register_forward_hook(hook)- Registers a forward hook on the module. - Registers a forward pre-hook on the module. - Registers a backward hook on the module. - Registers a post hook to be run after module's - load_state_dictis called.- register_module(name, module)- Alias for - add_module().- register_parameter(name, param)- Adds a parameter to the module. - requires_grad_([requires_grad])- Change if autograd should record operations on parameters in this module. - set_extra_state(state)- This function is called from - load_state_dict()to handle any extra state found within the- state_dict.- See - torch.Tensor.share_memory_()- state_dict(*args[, destination, prefix, ...])- Returns a dictionary containing references to the whole state of the module. - to(*args, **kwargs)- Moves and/or casts the parameters and buffers. - to_empty(*, device)- Moves the parameters and buffers to the specified device without copying storage. - train([mode])- Sets the module in training mode. - type(dst_type)- Casts all parameters and buffers to - dst_type.- xpu([device])- Moves all model parameters and buffers to the XPU. - zero_grad([set_to_none])- Sets gradients of all model parameters to zero. - Attributes: - alias of TypeVar('T_destination', bound= - Dict[- str,- Any])- forward(x, T=1.0)[source]#
- Defines the computation performed at every call. - Should be overridden by all subclasses. - Note - Although the recipe for forward pass needs to be defined within this function, one should call the - Moduleinstance afterwards instead of this since the former takes care of running the registered hooks while the latter silently ignores them.
 - T_destination#
- alias of TypeVar(‘T_destination’, bound= - Dict[- str,- Any])
 - __call__(*input, **kwargs)#
- Call self as a function. 
 - add_module(name, module)#
- Adds a child module to the current module. - The module can be accessed as an attribute using the given name. - Args:
- name (str): name of the child module. The child module can be
- accessed from this module using the given name 
 - module (Module): child module to be added to the module. 
 - Return type:
- None
 
 - apply(fn)#
- Applies - fnrecursively to every submodule (as returned by- .children()) as well as self. Typical use includes initializing the parameters of a model (see also nn-init-doc).- Args:
- fn ( - Module-> None): function to be applied to each submodule
- Returns:
- Module: self 
 - Example: - >>> @torch.no_grad() >>> def init_weights(m): >>> print(m) >>> if type(m) == nn.Linear: >>> m.weight.fill_(1.0) >>> print(m.weight) >>> net = nn.Sequential(nn.Linear(2, 2), nn.Linear(2, 2)) >>> net.apply(init_weights) Linear(in_features=2, out_features=2, bias=True) Parameter containing: tensor([[1., 1.], [1., 1.]], requires_grad=True) Linear(in_features=2, out_features=2, bias=True) Parameter containing: tensor([[1., 1.], [1., 1.]], requires_grad=True) Sequential( (0): Linear(in_features=2, out_features=2, bias=True) (1): Linear(in_features=2, out_features=2, bias=True) ) - Return type:
- TypeVar(- T, bound= Module)
 
 - bfloat16()#
- Casts all floating point parameters and buffers to - bfloat16datatype.- Note - This method modifies the module in-place. - Returns:
- Module: self 
 - Return type:
- TypeVar(- T, bound= Module)
 
 - buffers(recurse=True)#
- Returns an iterator over module buffers. - Args:
- recurse (bool): if True, then yields buffers of this module
- and all submodules. Otherwise, yields only buffers that are direct members of this module. 
 
- Yields:
- torch.Tensor: module buffer 
 - Example: - >>> # xdoctest: +SKIP("undefined vars") >>> for buf in model.buffers(): >>> print(type(buf), buf.size()) <class 'torch.Tensor'> (20L,) <class 'torch.Tensor'> (20L, 1L, 5L, 5L) - Return type:
- Iterator[- Tensor]
 
 - children()#
- Returns an iterator over immediate children modules. - Yields:
- Module: a child module 
 - Return type:
- Iterator[- Module]
 
 - cpu()#
- Moves all model parameters and buffers to the CPU. - Note - This method modifies the module in-place. - Returns:
- Module: self 
 - Return type:
- TypeVar(- T, bound= Module)
 
 - cuda(device=None)#
- Moves all model parameters and buffers to the GPU. - This also makes associated parameters and buffers different objects. So it should be called before constructing optimizer if the module will live on GPU while being optimized. - Note - This method modifies the module in-place. - Args:
- device (int, optional): if specified, all parameters will be
- copied to that device 
 
- Returns:
- Module: self 
 - Return type:
- TypeVar(- T, bound= Module)
 
 - double()#
- Casts all floating point parameters and buffers to - doubledatatype.- Note - This method modifies the module in-place. - Returns:
- Module: self 
 - Return type:
- TypeVar(- T, bound= Module)
 
 - dump_patches: bool = False#
 - eval()#
- Sets the module in evaluation mode. - This has any effect only on certain modules. See documentations of particular modules for details of their behaviors in training/evaluation mode, if they are affected, e.g. - Dropout,- BatchNorm, etc.- This is equivalent with - self.train(False).- See locally-disable-grad-doc for a comparison between - eval()and several similar mechanisms that may be confused with it.- Returns:
- Module: self 
 - Return type:
- TypeVar(- T, bound= Module)
 
 - extra_repr()#
- Set the extra representation of the module - To print customized extra information, you should re-implement this method in your own modules. Both single-line and multi-line strings are acceptable. - Return type:
- str
 
 - float()#
- Casts all floating point parameters and buffers to - floatdatatype.- Note - This method modifies the module in-place. - Returns:
- Module: self 
 - Return type:
- TypeVar(- T, bound= Module)
 
 - get_buffer(target)#
- Returns the buffer given by - targetif it exists, otherwise throws an error.- See the docstring for - get_submodulefor a more detailed explanation of this method’s functionality as well as how to correctly specify- target.- Args:
- target: The fully-qualified string name of the buffer
- to look for. (See - get_submodulefor how to specify a fully-qualified string.)
 
- Returns:
- torch.Tensor: The buffer referenced by - target
- Raises:
- AttributeError: If the target string references an invalid
- path or resolves to something that is not a buffer 
 
 - Return type:
- Tensor
 
 - get_extra_state()#
- Returns any extra state to include in the module’s state_dict. Implement this and a corresponding - set_extra_state()for your module if you need to store extra state. This function is called when building the module’s- state_dict().- Note that extra state should be pickleable to ensure working serialization of the state_dict. We only provide provide backwards compatibility guarantees for serializing Tensors; other objects may break backwards compatibility if their serialized pickled form changes. - Returns:
- object: Any extra state to store in the module’s state_dict 
 - Return type:
- Any
 
 - get_parameter(target)#
- Returns the parameter given by - targetif it exists, otherwise throws an error.- See the docstring for - get_submodulefor a more detailed explanation of this method’s functionality as well as how to correctly specify- target.- Args:
- target: The fully-qualified string name of the Parameter
- to look for. (See - get_submodulefor how to specify a fully-qualified string.)
 
- Returns:
- torch.nn.Parameter: The Parameter referenced by - target
- Raises:
- AttributeError: If the target string references an invalid
- path or resolves to something that is not an - nn.Parameter
 
 - Return type:
- Parameter
 
 - get_submodule(target)#
- Returns the submodule given by - targetif it exists, otherwise throws an error.- For example, let’s say you have an - nn.Module- Athat looks like this:- A( (net_b): Module( (net_c): Module( (conv): Conv2d(16, 33, kernel_size=(3, 3), stride=(2, 2)) ) (linear): Linear(in_features=100, out_features=200, bias=True) ) )- (The diagram shows an - nn.Module- A.- Ahas a nested submodule- net_b, which itself has two submodules- net_cand- linear.- net_cthen has a submodule- conv.)- To check whether or not we have the - linearsubmodule, we would call- get_submodule("net_b.linear"). To check whether we have the- convsubmodule, we would call- get_submodule("net_b.net_c.conv").- The runtime of - get_submoduleis bounded by the degree of module nesting in- target. A query against- named_modulesachieves the same result, but it is O(N) in the number of transitive modules. So, for a simple check to see if some submodule exists,- get_submoduleshould always be used.- Args:
- target: The fully-qualified string name of the submodule
- to look for. (See above example for how to specify a fully-qualified string.) 
 
- Returns:
- torch.nn.Module: The submodule referenced by - target
- Raises:
- AttributeError: If the target string references an invalid
- path or resolves to something that is not an - nn.Module
 
 - Return type:
- Module
 
 - half()#
- Casts all floating point parameters and buffers to - halfdatatype.- Note - This method modifies the module in-place. - Returns:
- Module: self 
 - Return type:
- TypeVar(- T, bound= Module)
 
 - ipu(device=None)#
- Moves all model parameters and buffers to the IPU. - This also makes associated parameters and buffers different objects. So it should be called before constructing optimizer if the module will live on IPU while being optimized. - Note - This method modifies the module in-place. - Arguments:
- device (int, optional): if specified, all parameters will be
- copied to that device 
 
- Returns:
- Module: self 
 - Return type:
- TypeVar(- T, bound= Module)
 
 - load_state_dict(state_dict, strict=True)#
- Copies parameters and buffers from - state_dictinto this module and its descendants. If- strictis- True, then the keys of- state_dictmust exactly match the keys returned by this module’s- state_dict()function.- Args:
- state_dict (dict): a dict containing parameters and
- persistent buffers. 
- strict (bool, optional): whether to strictly enforce that the keys
- in - state_dictmatch the keys returned by this module’s- state_dict()function. Default:- True
 
- Returns:
- NamedTuplewith- missing_keysand- unexpected_keysfields:
- missing_keys is a list of str containing the missing keys 
- unexpected_keys is a list of str containing the unexpected keys 
 
 
- Note:
- If a parameter or buffer is registered as - Noneand its corresponding key exists in- state_dict,- load_state_dict()will raise a- RuntimeError.
 
 - modules()#
- Returns an iterator over all modules in the network. - Yields:
- Module: a module in the network 
- Note:
- Duplicate modules are returned only once. In the following example, - lwill be returned only once.
 - Example: - >>> l = nn.Linear(2, 2) >>> net = nn.Sequential(l, l) >>> for idx, m in enumerate(net.modules()): ... print(idx, '->', m) 0 -> Sequential( (0): Linear(in_features=2, out_features=2, bias=True) (1): Linear(in_features=2, out_features=2, bias=True) ) 1 -> Linear(in_features=2, out_features=2, bias=True) - Return type:
- Iterator[- Module]
 
 - named_buffers(prefix='', recurse=True)#
- Returns an iterator over module buffers, yielding both the name of the buffer as well as the buffer itself. - Args:
- prefix (str): prefix to prepend to all buffer names. recurse (bool): if True, then yields buffers of this module - and all submodules. Otherwise, yields only buffers that are direct members of this module. 
- Yields:
- (str, torch.Tensor): Tuple containing the name and buffer 
 - Example: - >>> # xdoctest: +SKIP("undefined vars") >>> for name, buf in self.named_buffers(): >>> if name in ['running_var']: >>> print(buf.size()) - Return type:
- Iterator[- Tuple[- str,- Tensor]]
 
 - named_children()#
- Returns an iterator over immediate children modules, yielding both the name of the module as well as the module itself. - Yields:
- (str, Module): Tuple containing a name and child module 
 - Example: - >>> # xdoctest: +SKIP("undefined vars") >>> for name, module in model.named_children(): >>> if name in ['conv4', 'conv5']: >>> print(module) - Return type:
- Iterator[- Tuple[- str,- Module]]
 
 - named_modules(memo=None, prefix='', remove_duplicate=True)#
- Returns an iterator over all modules in the network, yielding both the name of the module as well as the module itself. - Args:
- memo: a memo to store the set of modules already added to the result prefix: a prefix that will be added to the name of the module remove_duplicate: whether to remove the duplicated module instances in the result - or not 
- Yields:
- (str, Module): Tuple of name and module 
- Note:
- Duplicate modules are returned only once. In the following example, - lwill be returned only once.
 - Example: - >>> l = nn.Linear(2, 2) >>> net = nn.Sequential(l, l) >>> for idx, m in enumerate(net.named_modules()): ... print(idx, '->', m) 0 -> ('', Sequential( (0): Linear(in_features=2, out_features=2, bias=True) (1): Linear(in_features=2, out_features=2, bias=True) )) 1 -> ('0', Linear(in_features=2, out_features=2, bias=True)) 
 - named_parameters(prefix='', recurse=True)#
- Returns an iterator over module parameters, yielding both the name of the parameter as well as the parameter itself. - Args:
- prefix (str): prefix to prepend to all parameter names. recurse (bool): if True, then yields parameters of this module - and all submodules. Otherwise, yields only parameters that are direct members of this module. 
- Yields:
- (str, Parameter): Tuple containing the name and parameter 
 - Example: - >>> # xdoctest: +SKIP("undefined vars") >>> for name, param in self.named_parameters(): >>> if name in ['bias']: >>> print(param.size()) - Return type:
- Iterator[- Tuple[- str,- Parameter]]
 
 - parameters(recurse=True)#
- Returns an iterator over module parameters. - This is typically passed to an optimizer. - Args:
- recurse (bool): if True, then yields parameters of this module
- and all submodules. Otherwise, yields only parameters that are direct members of this module. 
 
- Yields:
- Parameter: module parameter 
 - Example: - >>> # xdoctest: +SKIP("undefined vars") >>> for param in model.parameters(): >>> print(type(param), param.size()) <class 'torch.Tensor'> (20L,) <class 'torch.Tensor'> (20L, 1L, 5L, 5L) - Return type:
- Iterator[- Parameter]
 
 - register_backward_hook(hook)#
- Registers a backward hook on the module. - This function is deprecated in favor of - register_full_backward_hook()and the behavior of this function will change in future versions.- Returns:
- torch.utils.hooks.RemovableHandle:
- a handle that can be used to remove the added hook by calling - handle.remove()
 
 - Return type:
- RemovableHandle
 
 - register_buffer(name, tensor, persistent=True)#
- Adds a buffer to the module. - This is typically used to register a buffer that should not to be considered a model parameter. For example, BatchNorm’s - running_meanis not a parameter, but is part of the module’s state. Buffers, by default, are persistent and will be saved alongside parameters. This behavior can be changed by setting- persistentto- False. The only difference between a persistent buffer and a non-persistent buffer is that the latter will not be a part of this module’s- state_dict.- Buffers can be accessed as attributes using given names. - Args:
- name (str): name of the buffer. The buffer can be accessed
- from this module using the given name 
- tensor (Tensor or None): buffer to be registered. If None, then operations
- that run on buffers, such as - cuda, are ignored. If- None, the buffer is not included in the module’s- state_dict.
- persistent (bool): whether the buffer is part of this module’s
 
 - Example: - >>> # xdoctest: +SKIP("undefined vars") >>> self.register_buffer('running_mean', torch.zeros(num_features)) - Return type:
- None
 
 - register_forward_hook(hook)#
- Registers a forward hook on the module. - The hook will be called every time after - forward()has computed an output. It should have the following signature:- hook(module, input, output) -> None or modified output - The input contains only the positional arguments given to the module. Keyword arguments won’t be passed to the hooks and only to the - forward. The hook can modify the output. It can modify the input inplace but it will not have effect on forward since this is called after- forward()is called.- Returns:
- torch.utils.hooks.RemovableHandle:
- a handle that can be used to remove the added hook by calling - handle.remove()
 
 - Return type:
- RemovableHandle
 
 - register_forward_pre_hook(hook)#
- Registers a forward pre-hook on the module. - The hook will be called every time before - forward()is invoked. It should have the following signature:- hook(module, input) -> None or modified input - The input contains only the positional arguments given to the module. Keyword arguments won’t be passed to the hooks and only to the - forward. The hook can modify the input. User can either return a tuple or a single modified value in the hook. We will wrap the value into a tuple if a single value is returned(unless that value is already a tuple).- Returns:
- torch.utils.hooks.RemovableHandle:
- a handle that can be used to remove the added hook by calling - handle.remove()
 
 - Return type:
- RemovableHandle
 
 - register_full_backward_hook(hook)#
- Registers a backward hook on the module. - The hook will be called every time the gradients with respect to a module are computed, i.e. the hook will execute if and only if the gradients with respect to module outputs are computed. The hook should have the following signature: - hook(module, grad_input, grad_output) -> tuple(Tensor) or None - The - grad_inputand- grad_outputare tuples that contain the gradients with respect to the inputs and outputs respectively. The hook should not modify its arguments, but it can optionally return a new gradient with respect to the input that will be used in place of- grad_inputin subsequent computations.- grad_inputwill only correspond to the inputs given as positional arguments and all kwarg arguments are ignored. Entries in- grad_inputand- grad_outputwill be- Nonefor all non-Tensor arguments.- For technical reasons, when this hook is applied to a Module, its forward function will receive a view of each Tensor passed to the Module. Similarly the caller will receive a view of each Tensor returned by the Module’s forward function. - Warning - Modifying inputs or outputs inplace is not allowed when using backward hooks and will raise an error. - Returns:
- torch.utils.hooks.RemovableHandle:
- a handle that can be used to remove the added hook by calling - handle.remove()
 
 - Return type:
- RemovableHandle
 
 - register_load_state_dict_post_hook(hook)#
- Registers a post hook to be run after module’s - load_state_dictis called.- It should have the following signature::
- hook(module, incompatible_keys) -> None 
 - The - moduleargument is the current module that this hook is registered on, and the- incompatible_keysargument is a- NamedTupleconsisting of attributes- missing_keysand- unexpected_keys.- missing_keysis a- listof- strcontaining the missing keys and- unexpected_keysis a- listof- strcontaining the unexpected keys.- The given incompatible_keys can be modified inplace if needed. - Note that the checks performed when calling - load_state_dict()with- strict=Trueare affected by modifications the hook makes to- missing_keysor- unexpected_keys, as expected. Additions to either set of keys will result in an error being thrown when- strict=True, and clearning out both missing and unexpected keys will avoid an error.- Returns:
- torch.utils.hooks.RemovableHandle:
- a handle that can be used to remove the added hook by calling - handle.remove()
 
 
 - register_module(name, module)#
- Alias for - add_module().- Return type:
- None
 
 - register_parameter(name, param)#
- Adds a parameter to the module. - The parameter can be accessed as an attribute using given name. - Args:
- name (str): name of the parameter. The parameter can be accessed
- from this module using the given name 
- param (Parameter or None): parameter to be added to the module. If
- None, then operations that run on parameters, such as- cuda, are ignored. If- None, the parameter is not included in the module’s- state_dict.
 
 - Return type:
- None
 
 - requires_grad_(requires_grad=True)#
- Change if autograd should record operations on parameters in this module. - This method sets the parameters’ - requires_gradattributes in-place.- This method is helpful for freezing part of the module for finetuning or training parts of a model individually (e.g., GAN training). - See locally-disable-grad-doc for a comparison between - requires_grad_()and several similar mechanisms that may be confused with it.- Args:
- requires_grad (bool): whether autograd should record operations on
- parameters in this module. Default: - True.
 
- Returns:
- Module: self 
 - Return type:
- TypeVar(- T, bound= Module)
 
 - set_extra_state(state)#
- This function is called from - load_state_dict()to handle any extra state found within the- state_dict. Implement this function and a corresponding- get_extra_state()for your module if you need to store extra state within its- state_dict.- Args:
- state (dict): Extra state from the - state_dict
 
 - See - torch.Tensor.share_memory_()- Return type:
- TypeVar(- T, bound= Module)
 
 - state_dict(*args, destination=None, prefix='', keep_vars=False)#
- Returns a dictionary containing references to the whole state of the module. - Both parameters and persistent buffers (e.g. running averages) are included. Keys are corresponding parameter and buffer names. Parameters and buffers set to - Noneare not included.- Note - The returned object is a shallow copy. It contains references to the module’s parameters and buffers. - Warning - Currently - state_dict()also accepts positional arguments for- destination,- prefixand- keep_varsin order. However, this is being deprecated and keyword arguments will be enforced in future releases.- Warning - Please avoid the use of argument - destinationas it is not designed for end-users.- Args:
- destination (dict, optional): If provided, the state of module will
- be updated into the dict and the same object is returned. Otherwise, an - OrderedDictwill be created and returned. Default:- None.
- prefix (str, optional): a prefix added to parameter and buffer
- names to compose the keys in state_dict. Default: - ''.
- keep_vars (bool, optional): by default the Tensors
- returned in the state dict are detached from autograd. If it’s set to - True, detaching will not be performed. Default:- False.
 
- Returns:
- dict:
- a dictionary containing a whole state of the module 
 
 - Example: - >>> # xdoctest: +SKIP("undefined vars") >>> module.state_dict().keys() ['bias', 'weight'] 
 - to(*args, **kwargs)#
- Moves and/or casts the parameters and buffers. - This can be called as - to(device=None, dtype=None, non_blocking=False)
 - to(dtype, non_blocking=False)
 - to(tensor, non_blocking=False)
 - to(memory_format=torch.channels_last)
 - Its signature is similar to - torch.Tensor.to(), but only accepts floating point or complex- dtypes. In addition, this method will only cast the floating point or complex parameters and buffers to- dtype(if given). The integral parameters and buffers will be moved- device, if that is given, but with dtypes unchanged. When- non_blockingis set, it tries to convert/move asynchronously with respect to the host if possible, e.g., moving CPU Tensors with pinned memory to CUDA devices.- See below for examples. - Note - This method modifies the module in-place. - Args:
- device (torch.device): the desired device of the parameters
- and buffers in this module 
- dtype (torch.dtype): the desired floating point or complex dtype of
- the parameters and buffers in this module 
- tensor (torch.Tensor): Tensor whose dtype and device are the desired
- dtype and device for all parameters and buffers in this module 
- memory_format (torch.memory_format): the desired memory
- format for 4D parameters and buffers in this module (keyword only argument) 
 
- device (
- Returns:
- Module: self 
 - Examples: - >>> # xdoctest: +IGNORE_WANT("non-deterministic") >>> linear = nn.Linear(2, 2) >>> linear.weight Parameter containing: tensor([[ 0.1913, -0.3420], [-0.5113, -0.2325]]) >>> linear.to(torch.double) Linear(in_features=2, out_features=2, bias=True) >>> linear.weight Parameter containing: tensor([[ 0.1913, -0.3420], [-0.5113, -0.2325]], dtype=torch.float64) >>> # xdoctest: +REQUIRES(env:TORCH_DOCTEST_CUDA1) >>> gpu1 = torch.device("cuda:1") >>> linear.to(gpu1, dtype=torch.half, non_blocking=True) Linear(in_features=2, out_features=2, bias=True) >>> linear.weight Parameter containing: tensor([[ 0.1914, -0.3420], [-0.5112, -0.2324]], dtype=torch.float16, device='cuda:1') >>> cpu = torch.device("cpu") >>> linear.to(cpu) Linear(in_features=2, out_features=2, bias=True) >>> linear.weight Parameter containing: tensor([[ 0.1914, -0.3420], [-0.5112, -0.2324]], dtype=torch.float16) >>> linear = nn.Linear(2, 2, bias=None).to(torch.cdouble) >>> linear.weight Parameter containing: tensor([[ 0.3741+0.j, 0.2382+0.j], [ 0.5593+0.j, -0.4443+0.j]], dtype=torch.complex128) >>> linear(torch.ones(3, 2, dtype=torch.cdouble)) tensor([[0.6122+0.j, 0.1150+0.j], [0.6122+0.j, 0.1150+0.j], [0.6122+0.j, 0.1150+0.j]], dtype=torch.complex128) 
 - to_empty(*, device)#
- Moves the parameters and buffers to the specified device without copying storage. - Args:
- device (torch.device): The desired device of the parameters
- and buffers in this module. 
 
- device (
- Returns:
- Module: self 
 - Return type:
- TypeVar(- T, bound= Module)
 
 - train(mode=True)#
- Sets the module in training mode. - This has any effect only on certain modules. See documentations of particular modules for details of their behaviors in training/evaluation mode, if they are affected, e.g. - Dropout,- BatchNorm, etc.- Args:
- mode (bool): whether to set training mode (True) or evaluation
- mode ( - False). Default:- True.
 
- mode (bool): whether to set training mode (
- Returns:
- Module: self 
 - Return type:
- TypeVar(- T, bound= Module)
 
 - type(dst_type)#
- Casts all parameters and buffers to - dst_type.- Note - This method modifies the module in-place. - Args:
- dst_type (type or string): the desired type 
- Returns:
- Module: self 
 - Return type:
- TypeVar(- T, bound= Module)
 
 - xpu(device=None)#
- Moves all model parameters and buffers to the XPU. - This also makes associated parameters and buffers different objects. So it should be called before constructing optimizer if the module will live on XPU while being optimized. - Note - This method modifies the module in-place. - Arguments:
- device (int, optional): if specified, all parameters will be
- copied to that device 
 
- Returns:
- Module: self 
 - Return type:
- TypeVar(- T, bound= Module)
 
 - zero_grad(set_to_none=False)#
- Sets gradients of all model parameters to zero. See similar function under - torch.optim.Optimizerfor more context.- Args:
- set_to_none (bool): instead of setting to zero, set the grads to None.
- See - torch.optim.Optimizer.zero_grad()for details.
 
 - Return type:
- None
 
 - training: bool#
 
- class cleanlab.experimental.mnist_pytorch.CNN(batch_size=64, epochs=6, log_interval=50, lr=0.01, momentum=0.5, no_cuda=False, seed=1, test_batch_size=None, dataset='mnist', loader=None)[source]#
- Bases: - BaseEstimator- Wraps a PyTorch CNN for the MNIST dataset within an sklearn template - Defines - .fit(),- .predict(), and- .predict_proba()functions. This template enables the PyTorch CNN to flexibly be used within the sklearn architecture – meaning it can be passed into functions like cross_val_predict as if it were an sklearn model. The cleanlab library requires that all models adhere to this basic sklearn template and thus, this class allows a PyTorch CNN to be used in for learning with noisy labels among other things.- Parameters:
- batch_size ( - int) –
- epochs ( - int) –
- log_interval ( - int) –
- lr ( - float) –
- momentum ( - float) –
- no_cuda ( - bool) –
- seed ( - int) –
- test_batch_size ( - int, default- None) –
- dataset ( - {'mnist', 'sklearn-digits'}) –
- loader ( - {'train', 'test'}) – Set to ‘test’ to force fit() and predict_proba() on test_set
 
 - Note - Be careful setting the - loaderparam, it will override every other loader If you set this to ‘test’, but call .predict(loader = ‘train’) then .predict() will still predict on test!- batch_size#
- Type:
- int
 
 - epochs#
- Type:
- int
 
 - log_interval#
- Type:
- int
 
 - lr#
- Type:
- float
 
 - momentum#
- Type:
- float
 
 - no_cuda#
- Type:
- bool
 
 - seed#
- Type:
- int
 
 - test_batch_size#
- Type:
- int, default- None
 
 - dataset#
- Type:
- {'mnist', 'sklearn-digits'}
 
 - loader#
- Set to ‘test’ to force fit() and predict_proba() on test_set - Type:
- {'train', 'test'}
 
 - Methods: - get_params([deep])- Get parameters for this estimator. - set_params(**parameters)- Set the parameters of this estimator. - fit(train_idx[, train_labels, ...])- This function adheres to sklearn's "fit(X, y)" format for compatibility with scikit-learn. - predict([idx, loader])- Get predicted labels from trained model. - __init_subclass__(**kwargs)- Set the - set_{method}_requestmethods.- Get metadata routing of this object. - predict_proba([idx, loader])- set_fit_request(*[, loader, sample_weight, ...])- Request metadata passed to the - fitmethod.- set_predict_proba_request(*[, idx, loader])- Request metadata passed to the - predict_probamethod.- set_predict_request(*[, idx, loader])- Request metadata passed to the - predictmethod.- get_params(deep=True)[source]#
- Get parameters for this estimator. - Parameters:
- deep ( - bool, default- True) – If True, will return the parameters for this estimator and contained subobjects that are estimators.
- Returns:
- params ( - dict) – Parameter names mapped to their values.
 
 - set_params(**parameters)[source]#
- Set the parameters of this estimator. - The method works on simple estimators as well as on nested objects (such as - Pipeline). The latter have parameters of the form- <component>__<parameter>so that it’s possible to update each component of a nested object.- Parameters:
- **params ( - dict) – Estimator parameters.
- Returns:
- self ( - estimator instance) – Estimator instance.
 
 - fit(train_idx, train_labels=None, sample_weight=None, loader='train')[source]#
- This function adheres to sklearn’s “fit(X, y)” format for compatibility with scikit-learn. ** All inputs should be numpy arrays, not pyTorch Tensors train_idx is not X, but instead a list of indices for X (and y if train_labels is None). This function is a member of the cnn class which will handle creation of X, y from the train_idx via the train_loader. 
 - classmethod __init_subclass__(**kwargs)#
- Set the - set_{method}_requestmethods.- This uses PEP-487 [1] to set the - set_{method}_requestmethods. It looks for the information available in the set default values which are set using- __metadata_request__*class attributes, or inferred from method signatures.- The - __metadata_request__*class attributes are used when a method does not explicitly accept a metadata through its arguments or if the developer would like to specify a request value for those metadata which are different from the default- None.- References 
 - get_metadata_routing()#
- Get metadata routing of this object. - Please check User Guide on how the routing mechanism works. - Returns:
- routing ( - MetadataRequest) – A- MetadataRequestencapsulating routing information.
 
 - set_fit_request(*, loader: Union[bool, None, str] = '$UNCHANGED$', sample_weight: Union[bool, None, str] = '$UNCHANGED$', train_idx: Union[bool, None, str] = '$UNCHANGED$', train_labels: Union[bool, None, str] = '$UNCHANGED$') CNN#
- Request metadata passed to the - fitmethod.- Note that this method is only relevant if - enable_metadata_routing=True(see- sklearn.set_config()). Please see User Guide on how the routing mechanism works.- The options for each parameter are: - True: metadata is requested, and passed to- fitif provided. The request is ignored if metadata is not provided.
- False: metadata is not requested and the meta-estimator will not pass it to- fit.
- None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.
- str: metadata should be passed to the meta-estimator with this given alias instead of the original name.
 - The default ( - sklearn.utils.metadata_routing.UNCHANGED) retains the existing request. This allows you to change the request for some parameters and not others.- New in version 1.3. - Note - This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a - pipeline.Pipeline. Otherwise it has no effect.- Parameters:
- loader ( - str,- True,- False, or- None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for- loaderparameter in- fit.
- sample_weight ( - str,- True,- False, or- None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for- sample_weightparameter in- fit.
- train_idx ( - str,- True,- False, or- None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for- train_idxparameter in- fit.
- train_labels ( - str,- True,- False, or- None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for- train_labelsparameter in- fit.
 
- Returns:
- self ( - object) – The updated object.
 
 - set_predict_proba_request(*, idx: Union[bool, None, str] = '$UNCHANGED$', loader: Union[bool, None, str] = '$UNCHANGED$') CNN#
- Request metadata passed to the - predict_probamethod.- Note that this method is only relevant if - enable_metadata_routing=True(see- sklearn.set_config()). Please see User Guide on how the routing mechanism works.- The options for each parameter are: - True: metadata is requested, and passed to- predict_probaif provided. The request is ignored if metadata is not provided.
- False: metadata is not requested and the meta-estimator will not pass it to- predict_proba.
- None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.
- str: metadata should be passed to the meta-estimator with this given alias instead of the original name.
 - The default ( - sklearn.utils.metadata_routing.UNCHANGED) retains the existing request. This allows you to change the request for some parameters and not others.- New in version 1.3. - Note - This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a - pipeline.Pipeline. Otherwise it has no effect.- Parameters:
- idx ( - str,- True,- False, or- None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for- idxparameter in- predict_proba.
- loader ( - str,- True,- False, or- None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for- loaderparameter in- predict_proba.
 
- Returns:
- self ( - object) – The updated object.
 
 - set_predict_request(*, idx: Union[bool, None, str] = '$UNCHANGED$', loader: Union[bool, None, str] = '$UNCHANGED$') CNN#
- Request metadata passed to the - predictmethod.- Note that this method is only relevant if - enable_metadata_routing=True(see- sklearn.set_config()). Please see User Guide on how the routing mechanism works.- The options for each parameter are: - True: metadata is requested, and passed to- predictif provided. The request is ignored if metadata is not provided.
- False: metadata is not requested and the meta-estimator will not pass it to- predict.
- None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.
- str: metadata should be passed to the meta-estimator with this given alias instead of the original name.
 - The default ( - sklearn.utils.metadata_routing.UNCHANGED) retains the existing request. This allows you to change the request for some parameters and not others.- New in version 1.3. - Note - This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a - pipeline.Pipeline. Otherwise it has no effect.- Parameters:
- idx ( - str,- True,- False, or- None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for- idxparameter in- predict.
- loader ( - str,- True,- False, or- None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for- loaderparameter in- predict.
 
- Returns:
- self ( - object) – The updated object.