Files
TinyTorch/tinytorch/_modidx.py
Vijay Janapa Reddi 688e5826ec feat: Add Milestone 04 (CNN Revolution 1998) + Clean spatial imports
Milestone 04 - CNN Revolution:
 Complete 5-Act narrative structure (Challenge → Reflection)
 SimpleCNN architecture: Conv2d → ReLU → MaxPool → Linear
 Trains on 8x8 digits dataset (1,437 train, 360 test)
 Achieves 84.2% accuracy with only 810 parameters
 Demonstrates spatial operations preserve structure
 Beautiful visual output with progress tracking

Key Features:
- Conv2d (1→8 channels, 3×3 kernel) detects local patterns
- MaxPool2d (2×2) provides translation invariance
- 100× fewer parameters than equivalent MLP
- Training completes in ~105 seconds (50 epochs)
- Sample predictions table shows 9/10 correct

Module 09 Spatial Improvements:
- Removed ugly try/except import pattern
- Clean imports: 'from tinytorch.core.tensor import Tensor'
- Matches PyTorch style (simple and professional)
- No fallback logic needed

All 4 milestones now follow consistent 5-Act structure!
2025-09-30 17:04:41 -04:00

273 lines
33 KiB
Python
Generated

# ╔═══════════════════════════════════════════════════════════════════════════════╗
# ║ 🚨 CRITICAL WARNING 🚨 ║
# ║ AUTOGENERATED! DO NOT EDIT! ║
# ║ ║
# ║ This file is AUTOMATICALLY GENERATED from source modules. ║
# ║ ANY CHANGES MADE HERE WILL BE LOST when modules are re-exported! ║
# ║ ║
# ║ ✅ TO EDIT: modules/source/[unknown]/[unknown]_dev.py ║
# ║ ✅ TO EXPORT: Run 'tito module complete <module_name>' ║
# ║ ║
# ║ 🛡️ STUDENT PROTECTION: This file contains optimized implementations. ║
# ║ Editing it directly may break module functionality and training. ║
# ║ ║
# ║ 🎓 LEARNING TIP: Work in modules/source/ - that's where real development ║
# ║ happens! The tinytorch/ directory is just the compiled output. ║
# ╚═══════════════════════════════════════════════════════════════════════════════╝
# Autogenerated by nbdev
d = { 'settings': { 'branch': 'main',
'doc_baseurl': '/TinyTorch/',
'doc_host': 'https://tinytorch.github.io',
'git_url': 'https://github.com/tinytorch/TinyTorch/',
'lib_path': 'tinytorch'},
'syms': { 'tinytorch.core.activations': { 'tinytorch.core.activations.GELU': ( '02_activations/activations_dev.html#gelu',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.GELU.__call__': ( '02_activations/activations_dev.html#gelu.__call__',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.GELU.backward': ( '02_activations/activations_dev.html#gelu.backward',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.GELU.forward': ( '02_activations/activations_dev.html#gelu.forward',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.ReLU': ( '02_activations/activations_dev.html#relu',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.ReLU.__call__': ( '02_activations/activations_dev.html#relu.__call__',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.ReLU.backward': ( '02_activations/activations_dev.html#relu.backward',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.ReLU.forward': ( '02_activations/activations_dev.html#relu.forward',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.Sigmoid': ( '02_activations/activations_dev.html#sigmoid',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.Sigmoid.__call__': ( '02_activations/activations_dev.html#sigmoid.__call__',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.Sigmoid.backward': ( '02_activations/activations_dev.html#sigmoid.backward',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.Sigmoid.forward': ( '02_activations/activations_dev.html#sigmoid.forward',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.Softmax': ( '02_activations/activations_dev.html#softmax',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.Softmax.__call__': ( '02_activations/activations_dev.html#softmax.__call__',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.Softmax.backward': ( '02_activations/activations_dev.html#softmax.backward',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.Softmax.forward': ( '02_activations/activations_dev.html#softmax.forward',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.Tanh': ( '02_activations/activations_dev.html#tanh',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.Tanh.__call__': ( '02_activations/activations_dev.html#tanh.__call__',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.Tanh.backward': ( '02_activations/activations_dev.html#tanh.backward',
'tinytorch/core/activations.py'),
'tinytorch.core.activations.Tanh.forward': ( '02_activations/activations_dev.html#tanh.forward',
'tinytorch/core/activations.py')},
'tinytorch.core.autograd': {},
'tinytorch.core.layers': { 'tinytorch.core.layers.Dropout': ('03_layers/layers_dev.html#dropout', 'tinytorch/core/layers.py'),
'tinytorch.core.layers.Dropout.__call__': ( '03_layers/layers_dev.html#dropout.__call__',
'tinytorch/core/layers.py'),
'tinytorch.core.layers.Dropout.__init__': ( '03_layers/layers_dev.html#dropout.__init__',
'tinytorch/core/layers.py'),
'tinytorch.core.layers.Dropout.__repr__': ( '03_layers/layers_dev.html#dropout.__repr__',
'tinytorch/core/layers.py'),
'tinytorch.core.layers.Dropout.forward': ( '03_layers/layers_dev.html#dropout.forward',
'tinytorch/core/layers.py'),
'tinytorch.core.layers.Dropout.parameters': ( '03_layers/layers_dev.html#dropout.parameters',
'tinytorch/core/layers.py'),
'tinytorch.core.layers.Linear': ('03_layers/layers_dev.html#linear', 'tinytorch/core/layers.py'),
'tinytorch.core.layers.Linear.__call__': ( '03_layers/layers_dev.html#linear.__call__',
'tinytorch/core/layers.py'),
'tinytorch.core.layers.Linear.__init__': ( '03_layers/layers_dev.html#linear.__init__',
'tinytorch/core/layers.py'),
'tinytorch.core.layers.Linear.__repr__': ( '03_layers/layers_dev.html#linear.__repr__',
'tinytorch/core/layers.py'),
'tinytorch.core.layers.Linear.forward': ( '03_layers/layers_dev.html#linear.forward',
'tinytorch/core/layers.py'),
'tinytorch.core.layers.Linear.parameters': ( '03_layers/layers_dev.html#linear.parameters',
'tinytorch/core/layers.py')},
'tinytorch.core.losses': { 'tinytorch.core.losses.BinaryCrossEntropyLoss': ( '04_losses/losses_dev.html#binarycrossentropyloss',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.BinaryCrossEntropyLoss.__call__': ( '04_losses/losses_dev.html#binarycrossentropyloss.__call__',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.BinaryCrossEntropyLoss.__init__': ( '04_losses/losses_dev.html#binarycrossentropyloss.__init__',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.BinaryCrossEntropyLoss.backward': ( '04_losses/losses_dev.html#binarycrossentropyloss.backward',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.BinaryCrossEntropyLoss.forward': ( '04_losses/losses_dev.html#binarycrossentropyloss.forward',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.CrossEntropyLoss': ( '04_losses/losses_dev.html#crossentropyloss',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.CrossEntropyLoss.__call__': ( '04_losses/losses_dev.html#crossentropyloss.__call__',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.CrossEntropyLoss.__init__': ( '04_losses/losses_dev.html#crossentropyloss.__init__',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.CrossEntropyLoss.backward': ( '04_losses/losses_dev.html#crossentropyloss.backward',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.CrossEntropyLoss.forward': ( '04_losses/losses_dev.html#crossentropyloss.forward',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.MSELoss': ('04_losses/losses_dev.html#mseloss', 'tinytorch/core/losses.py'),
'tinytorch.core.losses.MSELoss.__call__': ( '04_losses/losses_dev.html#mseloss.__call__',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.MSELoss.__init__': ( '04_losses/losses_dev.html#mseloss.__init__',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.MSELoss.backward': ( '04_losses/losses_dev.html#mseloss.backward',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.MSELoss.forward': ( '04_losses/losses_dev.html#mseloss.forward',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.import_previous_module': ( '04_losses/losses_dev.html#import_previous_module',
'tinytorch/core/losses.py'),
'tinytorch.core.losses.log_softmax': ( '04_losses/losses_dev.html#log_softmax',
'tinytorch/core/losses.py')},
'tinytorch.core.optimizers': { 'tinytorch.core.optimizers.Adam': ( '06_optimizers/optimizers_dev.html#adam',
'tinytorch/core/optimizers.py'),
'tinytorch.core.optimizers.Adam.__init__': ( '06_optimizers/optimizers_dev.html#adam.__init__',
'tinytorch/core/optimizers.py'),
'tinytorch.core.optimizers.Adam.step': ( '06_optimizers/optimizers_dev.html#adam.step',
'tinytorch/core/optimizers.py'),
'tinytorch.core.optimizers.AdamW': ( '06_optimizers/optimizers_dev.html#adamw',
'tinytorch/core/optimizers.py'),
'tinytorch.core.optimizers.AdamW.__init__': ( '06_optimizers/optimizers_dev.html#adamw.__init__',
'tinytorch/core/optimizers.py'),
'tinytorch.core.optimizers.AdamW.step': ( '06_optimizers/optimizers_dev.html#adamw.step',
'tinytorch/core/optimizers.py'),
'tinytorch.core.optimizers.Optimizer': ( '06_optimizers/optimizers_dev.html#optimizer',
'tinytorch/core/optimizers.py'),
'tinytorch.core.optimizers.Optimizer.__init__': ( '06_optimizers/optimizers_dev.html#optimizer.__init__',
'tinytorch/core/optimizers.py'),
'tinytorch.core.optimizers.Optimizer.step': ( '06_optimizers/optimizers_dev.html#optimizer.step',
'tinytorch/core/optimizers.py'),
'tinytorch.core.optimizers.Optimizer.zero_grad': ( '06_optimizers/optimizers_dev.html#optimizer.zero_grad',
'tinytorch/core/optimizers.py'),
'tinytorch.core.optimizers.SGD': ( '06_optimizers/optimizers_dev.html#sgd',
'tinytorch/core/optimizers.py'),
'tinytorch.core.optimizers.SGD.__init__': ( '06_optimizers/optimizers_dev.html#sgd.__init__',
'tinytorch/core/optimizers.py'),
'tinytorch.core.optimizers.SGD.step': ( '06_optimizers/optimizers_dev.html#sgd.step',
'tinytorch/core/optimizers.py')},
'tinytorch.core.spatial': { 'tinytorch.core.spatial.AvgPool2d': ( '09_spatial/spatial_dev.html#avgpool2d',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.AvgPool2d.__call__': ( '09_spatial/spatial_dev.html#avgpool2d.__call__',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.AvgPool2d.__init__': ( '09_spatial/spatial_dev.html#avgpool2d.__init__',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.AvgPool2d.forward': ( '09_spatial/spatial_dev.html#avgpool2d.forward',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.AvgPool2d.parameters': ( '09_spatial/spatial_dev.html#avgpool2d.parameters',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.Conv2d': ( '09_spatial/spatial_dev.html#conv2d',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.Conv2d.__call__': ( '09_spatial/spatial_dev.html#conv2d.__call__',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.Conv2d.__init__': ( '09_spatial/spatial_dev.html#conv2d.__init__',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.Conv2d.forward': ( '09_spatial/spatial_dev.html#conv2d.forward',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.Conv2d.parameters': ( '09_spatial/spatial_dev.html#conv2d.parameters',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.MaxPool2d': ( '09_spatial/spatial_dev.html#maxpool2d',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.MaxPool2d.__call__': ( '09_spatial/spatial_dev.html#maxpool2d.__call__',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.MaxPool2d.__init__': ( '09_spatial/spatial_dev.html#maxpool2d.__init__',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.MaxPool2d.forward': ( '09_spatial/spatial_dev.html#maxpool2d.forward',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.MaxPool2d.parameters': ( '09_spatial/spatial_dev.html#maxpool2d.parameters',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.SimpleCNN': ( '09_spatial/spatial_dev.html#simplecnn',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.SimpleCNN.__call__': ( '09_spatial/spatial_dev.html#simplecnn.__call__',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.SimpleCNN.__init__': ( '09_spatial/spatial_dev.html#simplecnn.__init__',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.SimpleCNN.forward': ( '09_spatial/spatial_dev.html#simplecnn.forward',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.SimpleCNN.parameters': ( '09_spatial/spatial_dev.html#simplecnn.parameters',
'tinytorch/core/spatial.py'),
'tinytorch.core.spatial.SimpleCNN.relu': ( '09_spatial/spatial_dev.html#simplecnn.relu',
'tinytorch/core/spatial.py')},
'tinytorch.core.tensor': { 'tinytorch.core.tensor.Tensor': ('01_tensor/tensor_dev.html#tensor', 'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.__add__': ( '01_tensor/tensor_dev.html#tensor.__add__',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.__init__': ( '01_tensor/tensor_dev.html#tensor.__init__',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.__mul__': ( '01_tensor/tensor_dev.html#tensor.__mul__',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.__repr__': ( '01_tensor/tensor_dev.html#tensor.__repr__',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.__str__': ( '01_tensor/tensor_dev.html#tensor.__str__',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.__sub__': ( '01_tensor/tensor_dev.html#tensor.__sub__',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.__truediv__': ( '01_tensor/tensor_dev.html#tensor.__truediv__',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.backward': ( '01_tensor/tensor_dev.html#tensor.backward',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.matmul': ( '01_tensor/tensor_dev.html#tensor.matmul',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.max': ( '01_tensor/tensor_dev.html#tensor.max',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.mean': ( '01_tensor/tensor_dev.html#tensor.mean',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.numpy': ( '01_tensor/tensor_dev.html#tensor.numpy',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.reshape': ( '01_tensor/tensor_dev.html#tensor.reshape',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.sum': ( '01_tensor/tensor_dev.html#tensor.sum',
'tinytorch/core/tensor.py'),
'tinytorch.core.tensor.Tensor.transpose': ( '01_tensor/tensor_dev.html#tensor.transpose',
'tinytorch/core/tensor.py')},
'tinytorch.core.training': { 'tinytorch.core.training.CosineSchedule': ( '07_training/training_dev.html#cosineschedule',
'tinytorch/core/training.py'),
'tinytorch.core.training.CosineSchedule.__init__': ( '07_training/training_dev.html#cosineschedule.__init__',
'tinytorch/core/training.py'),
'tinytorch.core.training.CosineSchedule.get_lr': ( '07_training/training_dev.html#cosineschedule.get_lr',
'tinytorch/core/training.py'),
'tinytorch.core.training.Trainer': ( '07_training/training_dev.html#trainer',
'tinytorch/core/training.py'),
'tinytorch.core.training.Trainer.__init__': ( '07_training/training_dev.html#trainer.__init__',
'tinytorch/core/training.py'),
'tinytorch.core.training.Trainer._get_model_state': ( '07_training/training_dev.html#trainer._get_model_state',
'tinytorch/core/training.py'),
'tinytorch.core.training.Trainer._get_optimizer_state': ( '07_training/training_dev.html#trainer._get_optimizer_state',
'tinytorch/core/training.py'),
'tinytorch.core.training.Trainer._get_scheduler_state': ( '07_training/training_dev.html#trainer._get_scheduler_state',
'tinytorch/core/training.py'),
'tinytorch.core.training.Trainer._set_model_state': ( '07_training/training_dev.html#trainer._set_model_state',
'tinytorch/core/training.py'),
'tinytorch.core.training.Trainer._set_optimizer_state': ( '07_training/training_dev.html#trainer._set_optimizer_state',
'tinytorch/core/training.py'),
'tinytorch.core.training.Trainer._set_scheduler_state': ( '07_training/training_dev.html#trainer._set_scheduler_state',
'tinytorch/core/training.py'),
'tinytorch.core.training.Trainer.evaluate': ( '07_training/training_dev.html#trainer.evaluate',
'tinytorch/core/training.py'),
'tinytorch.core.training.Trainer.load_checkpoint': ( '07_training/training_dev.html#trainer.load_checkpoint',
'tinytorch/core/training.py'),
'tinytorch.core.training.Trainer.save_checkpoint': ( '07_training/training_dev.html#trainer.save_checkpoint',
'tinytorch/core/training.py'),
'tinytorch.core.training.Trainer.train_epoch': ( '07_training/training_dev.html#trainer.train_epoch',
'tinytorch/core/training.py')},
'tinytorch.data.loader': { 'tinytorch.data.loader.DataLoader': ( '08_dataloader/dataloader_dev.html#dataloader',
'tinytorch/data/loader.py'),
'tinytorch.data.loader.DataLoader.__init__': ( '08_dataloader/dataloader_dev.html#dataloader.__init__',
'tinytorch/data/loader.py'),
'tinytorch.data.loader.DataLoader.__iter__': ( '08_dataloader/dataloader_dev.html#dataloader.__iter__',
'tinytorch/data/loader.py'),
'tinytorch.data.loader.DataLoader.__len__': ( '08_dataloader/dataloader_dev.html#dataloader.__len__',
'tinytorch/data/loader.py'),
'tinytorch.data.loader.DataLoader._collate_batch': ( '08_dataloader/dataloader_dev.html#dataloader._collate_batch',
'tinytorch/data/loader.py'),
'tinytorch.data.loader.Dataset': ( '08_dataloader/dataloader_dev.html#dataset',
'tinytorch/data/loader.py'),
'tinytorch.data.loader.Dataset.__getitem__': ( '08_dataloader/dataloader_dev.html#dataset.__getitem__',
'tinytorch/data/loader.py'),
'tinytorch.data.loader.Dataset.__len__': ( '08_dataloader/dataloader_dev.html#dataset.__len__',
'tinytorch/data/loader.py'),
'tinytorch.data.loader.TensorDataset': ( '08_dataloader/dataloader_dev.html#tensordataset',
'tinytorch/data/loader.py'),
'tinytorch.data.loader.TensorDataset.__getitem__': ( '08_dataloader/dataloader_dev.html#tensordataset.__getitem__',
'tinytorch/data/loader.py'),
'tinytorch.data.loader.TensorDataset.__init__': ( '08_dataloader/dataloader_dev.html#tensordataset.__init__',
'tinytorch/data/loader.py'),
'tinytorch.data.loader.TensorDataset.__len__': ( '08_dataloader/dataloader_dev.html#tensordataset.__len__',
'tinytorch/data/loader.py')}}}