Skip to content

Add TorchVision classification models: SqueezeNet, DenseNet, ShuffleN…#1550

Open
alinpahontu2912 wants to merge 4 commits intodotnet:mainfrom
alinpahontu2912:torchvision_models
Open

Add TorchVision classification models: SqueezeNet, DenseNet, ShuffleN…#1550
alinpahontu2912 wants to merge 4 commits intodotnet:mainfrom
alinpahontu2912:torchvision_models

Conversation

@alinpahontu2912
Copy link
Copy Markdown
Member

Fixes #588
Add 5 new model families (21 variants) ported from PyTorch torchvision:

  • SqueezeNet 1.0/1.1
  • DenseNet-121/161/169/201
  • ShuffleNet V2 x0.5/x1.0/x1.5/x2.0
  • EfficientNet B0-B7, EfficientNet V2 S/M/L
  • MNASNet 0.5/0.75/1.0/1.3

All models support pre-trained weight loading via weights_file/skipfc parameters with state_dict keys matching PyTorch exactly.

Tests added for all new model families.

TODO: The following torchvision classification models are not yet implemented:

  • RegNet (Y/X variants)
  • ConvNeXt (Tiny, Small, Base, Large)
  • Vision Transformer / ViT (B-16, B-32, L-16, L-32, H-14)
  • Swin Transformer (T, S, B)
  • Swin Transformer V2 (T, S, B)
  • MaxViT (T)

alinpahontu2912 and others added 3 commits February 27, 2026 15:04
…etV2, EfficientNet, MNASNet

Add 5 new model families (21 variants) ported from PyTorch torchvision:

- SqueezeNet 1.0/1.1
- DenseNet-121/161/169/201
- ShuffleNet V2 x0.5/x1.0/x1.5/x2.0
- EfficientNet B0-B7, EfficientNet V2 S/M/L
- MNASNet 0.5/0.75/1.0/1.3

All models support pre-trained weight loading via weights_file/skipfc
parameters with state_dict keys matching PyTorch exactly.

Tests added for all new model families.

TODO: The following torchvision classification models are not yet implemented:
- RegNet (Y/X variants)
- ConvNeXt (Tiny, Small, Base, Large)
- Vision Transformer / ViT (B-16, B-32, L-16, L-32, H-14)
- Swin Transformer (T, S, B)
- Swin Transformer V2 (T, S, B)
- MaxViT (T)

Closes dotnet#586

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fix EfficientNetB0 and EfficientNetV2S named_children order to match
  field declaration order (features, avgpool, classifier)
- Fix DenseNet121 state_dict count from 242 to 727 to reflect proper
  registration of all dense layers via register_module

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
EfficientNetV2S (782 state dict entries) is the largest non-skipped
model and causes the test host process to crash from memory pressure
when run alongside all other model tests. Skip it following the same
pattern used for other large EfficientNet variants (B1-B7, V2M, V2L).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds additional TorchVision classification model families to TorchSharp, aligning module structure/state_dict keys with torchvision to enable loading pre-trained weights from exported PyTorch state_dicts.

Changes:

  • Introduces 5 new model families (SqueezeNet, DenseNet, ShuffleNetV2, EfficientNet V1/V2, MNASNet) with torchvision-style factory methods and optional weight loading (weights_file/skipfc).
  • Adds/extends unit tests to validate basic model structure (named children), state_dict sizes for select variants, and forward output shapes.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
test/TorchSharpTest/TestTorchVision.cs Adds tests covering the new model families (some heavy variants explicitly skipped for CI stability).
src/TorchVision/models/SqueezeNet.cs Implements SqueezeNet 1.0/1.1 modules + factory methods with optional weight loading.
src/TorchVision/models/DenseNet.cs Implements DenseNet-121/161/169/201 modules + factory methods with optional weight loading.
src/TorchVision/models/ShuffleNetV2.cs Implements ShuffleNet V2 x0.5/x1.0/x1.5/x2.0 modules + factory methods with optional weight loading.
src/TorchVision/models/EfficientNet.cs Implements EfficientNet B0–B7 and EfficientNetV2 S/M/L modules + factory methods with optional weight loading.
src/TorchVision/models/MNASNet.cs Implements MNASNet 0.5/0.75/1.0/1.3 modules + factory methods with optional weight loading.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TorchVision: Add models with pre-trained weights.

2 participants