TorchLiter

module torchliter.engine.auto

Global Variables


class Cart

The Cart helper object that temporarily stores the engine components and attributes.

method Cart.__init__

__init__(*args: Any, **kwargs: Any)

property Cart.kwargs


method Cart.attach

attach(*args, **kwargs)

method Cart.parse_buffers

parse_buffers(
    step_function: Generator,
    mode: Optional[str] = None,
    buffer_type: Optional[torchliter.engine.buffers.BufferBase] = None,
    **kwargs
)

class AutoEngine

AutoEngine class.

Example Usage:

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


 cart = torchliter.Cart()
 cart.model = nn.Linear(1, 3)
 cart.train_loader = torch.utils.data.DataLoader(
      [i for i in range(100)], batch_size=5
 )
 cart.eval_loader = torch.utils.data.DataLoader(
      [i for i in range(100)], batch_size=5
 )
 cart.optimizer = torch.optim.AdamW(
      cart.model.parameters(), lr=1e-3, weight_decay=1e-5
 )

 def train_step(_, batch, **kwargs):
      image, target = batch
      logits = _.model(image)
      loss = F.cross_entropy(logits, target)
      _.optimizer.zero_grad()
      loss.backward()
      _.optimizer.step()

      yield "cross entropy loss", loss.item()

      acc = (logits.max(-1).indices == target).float().mean()

      yield "train acc", acc.item()

 def eval_step(_, batch, **kwargs):
      image, target = batch
      with torch.no_grad():
          logits = _.model(image)
      acc = (logits.max(-1).indices == target).float().mean()
      yield "eval acc", acc.item()

 def hello(_):
      print("hello")

 train_buffers = torchliter.engine.AutoEngine.auto_buffers(
      train_step, torchliter.buffers.ExponentialMovingAverage
 )
 eval_buffers = torchliter.engine.AutoEngine.auto_buffers(
      eval_step, torchliter.buffers.ScalarSummaryStatistics
 )
 TestEngineClass = torchliter.engine.AutoEngine.build(
      "TestEngine", train_step, eval_step, print_hello=hello
 )
 test_engine = TestEngineClass(**{**cart.kwargs, **train_buffers, **eval_buffers})

method AutoEngine.__init__

__init__(*events, **kwargs)

property AutoEngine.absolute_iterations


property AutoEngine.fractional_epoch


property AutoEngine.fractional_iteration


property AutoEngine.is_eval_stub


property AutoEngine.is_lambda_stub


property AutoEngine.is_train_stub


property AutoEngine.training


method AutoEngine.attach

attach(*events, **kwargs)

method AutoEngine.auto_buffers

auto_buffers(
    step_function: Generator,
    buffer_type: torchliter.engine.buffers.BufferBase,
    **buffer_kwargs
)

classmethod AutoEngine.build

build(
    engine_type_name: str,
    train_step: Optional[Callable] = None,
    eval_step: Optional[Callable] = None,
    **methods_to_attach: Callable
)  Type

method AutoEngine.eval_step

eval_step(batch: Any, **kwargs: Any)  Generator

if the eval_step is a generator function, convert it to a method that pipes streaming outputs to buffer classes in buffer_registry

Parameters ———- batch : Any Batch item

Yields —— Generator Tuple[str, Union[float, Tensor]]


method AutoEngine.per_batch

per_batch(batch: Union[Tuple[Any], Dict[str, Any]], **kwargs: Any)

method AutoEngine.train_step

train_step(batch: Any, **kwargs: Any)  Generator

if the train_step is a generator function, convert it to a method that pipes streaming outputs to buffer classes in buffer_registry

Parameters ———- batch : Any Batch item

Yields —— Generator Tuple[str, Union[float, Tensor]]