Metadata-Version: 2.1
Name: model-constructor
Version: 0.0.2
Summary: Constructor for pytorch models.
Home-page: https://github.com/ayasyrev/model_constructor
Author: Andrei Yasyrev
Author-email: a.yasyrev@gmail.com
License: Apache Software License 2.0
Description: <!--
        
        #################################################
        ### THIS FILE WAS AUTOGENERATED! DO NOT EDIT! ###
        #################################################
        # file to edit: index.ipynb
        # command to build the docs after a change: nbdev_build_docs
        
        -->
        
        # model_constructor
        
        > Constructor to create pytorch model.
        
        
        _
        
        ## Install
        
        `pip install model-constructor`
        
        ## How to use
        
        model = Net()
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        model = Net()
        ```
        
        </div>
        
        </div>
        
        # Resnet as example
        
        Lets create resnet18 and resnet34 (default Net() is resnet18()).
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        resnet18 = Net(block=BasicBlock, blocks=[2, 2, 2, 2])
        ```
        
        </div>
        
        </div>
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        resnet34 = Net(block=BasicBlock, blocks=[3, 4, 6, 3])
        ```
        
        </div>
        
        </div>
        
        # Predefined Resnet models - 18, 34, 50.
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        from model_constructor.resnet import *
        ```
        
        </div>
        
        </div>
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        model = resnet34(num_classes=10)
        ```
        
        </div>
        
        </div>
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        model = resnet50(num_classes=10)
        ```
        
        </div>
        
        </div>
        
        # Predefined Xresnet from fastai 1.
        
        This ie simplified version from fastai v1. I did refactoring for better understand and experime with models. For example, change activation funtions, different stems, batchnorm and activation order etc. In v2 much powerfull realisation.
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        from model_constructor.xresnet import *
        ```
        
        </div>
        
        </div>
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        model = xresnet50()
        ```
        
        </div>
        
        </div>
        
        # Some examples
        
        We can experiment with models by changing some parts of model. Here only base functionality, but it can be easily extanded.
        
        Here is some examples:
            
        
        ## Custom stem
        
        Stem with 3 conv layers
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        model = Net(stem=partial(Stem, stem_sizes=[32, 32]))
        ```
        
        </div>
        
        </div>
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        model.stem
        ```
        
        </div>
        <div class="output_area" markdown="1">
        
        
        
        
            Stem(
              sizes: [3, 32, 32, 64]
              (conv0): ConvLayer(
                (conv): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
                (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
                (act_fn): ReLU(inplace=True)
              )
              (conv1): ConvLayer(
                (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
                (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
                (act_fn): ReLU(inplace=True)
              )
              (conv2): ConvLayer(
                (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
                (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
                (act_fn): ReLU(inplace=True)
              )
              (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
            )
        
        
        
        </div>
        
        </div>
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        model = Net(stem_sizes=[32, 64])
        ```
        
        </div>
        
        </div>
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        model.stem
        ```
        
        </div>
        <div class="output_area" markdown="1">
        
        
        
        
            Stem(
              sizes: [3, 32, 64, 64]
              (conv0): ConvLayer(
                (conv): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
                (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
                (act_fn): ReLU(inplace=True)
              )
              (conv1): ConvLayer(
                (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
                (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
                (act_fn): ReLU(inplace=True)
              )
              (conv2): ConvLayer(
                (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
                (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
                (act_fn): ReLU(inplace=True)
              )
              (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
            )
        
        
        
        </div>
        
        </div>
        
        ## Activation function before Normalization
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        model = Net(bn_1st=False)
        ```
        
        </div>
        
        </div>
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        model.stem
        ```
        
        </div>
        <div class="output_area" markdown="1">
        
        
        
        
            Stem(
              sizes: [3, 64]
              (conv0): ConvLayer(
                (conv): Conv2d(3, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
                (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
                (act_fn): ReLU(inplace=True)
              )
              (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
            )
        
        
        
        </div>
        
        </div>
        
        
        ## Change activation function
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        act_fn = nn.LeakyReLU(inplace=True)
        ```
        
        </div>
        
        </div>
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        model = Net(act_fn=act_fn)
        ```
        
        </div>
        
        </div>
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        model.stem
        ```
        
        </div>
        <div class="output_area" markdown="1">
        
        
        
        
            Stem(
              sizes: [3, 64]
              (conv0): ConvLayer(
                (conv): Conv2d(3, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
                (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
                (act_fn): LeakyReLU(negative_slope=0.01, inplace=True)
              )
              (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
            )
        
        
        
        </div>
        
        </div>
        <div class="codecell" markdown="1">
        <div class="input_area" markdown="1">
        
        ```python
        model.body.layer_0.block_0.conv.conv_0
        ```
        
        </div>
        <div class="output_area" markdown="1">
        
        
        
        
            ConvLayer(
              (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
              (act_fn): LeakyReLU(negative_slope=0.01, inplace=True)
              (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            )
        
        
        
        </div>
        
        </div>
        
Keywords: dl,pytorch,model
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6
Description-Content-Type: text/markdown
