Skip to main content

Deep-learning Designer: Deep-Learning Training Optimization & Layers API(like Keras)

Project description

[DDesigner API] Deep-learning Designer API

1. About

1.1. DDesignerAPI?

It is a API for deep-learning learning and inference, and an API for application development using multi-platform

1.2. Functions

1.2.1. Layers and Blocks

  • Accelerator enabled layers and the ability to define special layers that are not defined in Keras and others
  • A function that defines a combination of layers as a block and easily composes a block (ex. CONV + BN + ACT + DROPOUT= ConvBlock)

1.2.2. Optimization for Accelerator Usage (XWN)

  • Optimized function to use accelerator


2. Support

2.1. Platforms

  • Tensorflow 2.6.0
  • PyTorch 1.13.1

2.2. Components of Network

2.2.1. Layers

  • Accelerator enabled layers and Custom layers that perform specific functions

2.2.1.1. Summary

Operation Support Train Platform Support TACHY Accelerator
Convolution TF/Keras/PyTorch O
TransposeConvolution TF/Keras/PyTorch O
CascadeConvolution TF/Keras/PyTorch O

2.2.1.2. Detail

  • Convolution : 1D, 2D with XWN optimization
  • TransposeConvolution : 1D, 2D with XWN optimization
  • CascadeConvolution : A Layer that decomposes a layer with large kernel into multiple layers with smaller kernels to lighten the model

2.2.2. Blocks

  • A set of defined layers for user convenience

2.2.2.1. Summary

Platform ConvBlock TConvBlock FCBlock
TF-Keras 1D/2D 2D O

2.2.2.2. Detail

  • ConvBlock : Convolution N-D Block (CONV + BN + ACT + DROPOUT), support Conv1DBlock, Conv2DBlock
  • TConvBlock : Transpose Convolution 2D Block (TCONV + BN + ACT + DROPOUT), support TConv2DBlock
  • CascadeConvBlock : Cascade Convolution N-D Block (CONV + BN + ACT + DROPOUT), support CascadeConv1DBlock, CascadeConv2DBlock

2.3. XWN (Applies only to convolution operations)

2.3.1. Transform Configuration (data type / default value / description)

  • transform : bool / False / Choose whether to use
  • bit : int / 4 / Quantization range (bit-1 ** 2)
  • max_scale : float / 4.0 / Max value

2.3.2. Pruning Configuration

  • pruning : bool / False / Choose whether to use
  • prun_weight : float / 0.5 / Weights for puning edge generation

2.3.3. Summary

Platform Conv TransposeConv
TF 1D/2D 1D/2D
TF-Keras 1D/2D 1D/2D
PyTorch 1D/2D 1D/2D



3. Command Usage

3.1. XWN

3.1.1. Single Convolution

3.1.1.1. Tensorflow

    >>> from ddesigner_api.tensorflow.xwn import tf_nn as nn
    >>> nn.conv2d(
            x,
            kernel,
            ...
            use_transform=True,
            bit=4,
            max_scale=4.0,
            use_pruning=False
        )

3.1.1.2. Keras

    >>> from ddesigner_api.tensorflow.xwn import keras_layers as klayers
    >>> klayers.Conv2D(
            2, 3, 
            ...
            use_transform=True,
            bit=4,
            max_scale=4.0
            use_pruning=True,
            prun_weight=0.5
        )

3.1.1.3. PyTorch

    >>> from ddesigner_api.pytorch.xwn import torch_nn as nn
    >>> nn.Conv2d(
            in_channels=1,
            out_channels=2,
            ...
            use_transform=True,
            bit=4,
            max_scale=4.0,
            use_pruning=False
        )

3.1.2. Custum Layer and Block (dpi)

3.1.2.1. Keras

    >>> from ddesigner_api.tensorflow import dpi_layers as dlayers
    >>> dlayers.CascadeConv2d(
            2, 3, 
            ...
            transform=4,
            max_scale=4.0,
            pruning=None,
        )

3.1.2.2. PyTorch

    >>> from ddesigner_api.pytorch import dpi_nn as dnn
    >>> dnn.CascadeConv2d(
            16, # in_channels 
            32, # out_channels
            7, # kernel_size
            stride=(1,1), 
            bias=False,
            ...
            transform=4,
            max_scale=4.0,
            pruning=None,
        )

3.2. Blocks

3.2.1. Keras

3.2.1.1. Conv1DBlock

    >>> from ddesigner_api.tensorflow import dpi_blocks as db
    >>> dtype='mixed_float16'
    >>> db.Conv1DBlock(
            64, 3, strides=1, padding='SAME', use_bias=False,
            activation=tf.keras.layers.ReLU(dtype=dtype), 
            batchnormalization=tf.keras.layers.BatchNormalization(dtype=dtype), 
            dtype=dtype,
            transform=4, max_scale=4.0,
            pruning=0.5
        )

3.2.1.2. Conv2DBlock

    >>> from ddesigner_api.tensorflow import dpi_blocks as db
    >>> dtype='mixed_float16'
    >>> db.Conv2DBlock(
            64, (3,3), strides=(1,1), padding='SAME', use_bias=False,
            activation=tf.keras.layers.ReLU(dtype=dtype), 
            batchnormalization=tf.keras.layers.BatchNormalization(dtype=dtype), 
            dtype=dtype,
            transform=4, max_scale=4.0,
            pruning=0.5
        )

3.2.1.3. TConv2DBlock

    >>> from ddesigner_api.tensorflow import dpi_blocks as db
    >>> dtype='mixed_float16'
    >>> db.TConv2DBlock(
            64, (3,3), strides=(2,2), padding='SAME', use_bias=False,
            activation=tf.keras.layers.ReLU(dtype=dtype), 
            batchnormalization=tf.keras.layers.BatchNormalization(dtype=dtype), 
            dtype=dtype,
            transform=4, max_scale=4.0,
            pruning=0.5
        )

3.3. Examples

  • An example of comparing and printing results before optimization(XWN) and after XWN for the same input on a supported platform.

3.3.1. Tensorflow

    >>> import ddesigner_api.tensorflow.examples.examples_tensorflow as ex
    >>> ex.main()
    >>> ====== TENSORFLOW Examples======
    >>> 1: Fixed  Float32 Input Conv2D
    >>> q: Quit
    >>> Select Case: ...

3.3.2. Keras

    >>> import ddesigner_api.tensorflow.examples.examples_keras as ex
    >>> ex.main()
    >>> ====== KERAS Examples======
    >>> 1: Fixed  Float32 Input Conv2D
    >>> 2: Random Float32 Input Conv2D
    >>> 3: Random Float32 Input Conv2DTranspose
    >>> 4: Random Float16 Input Conv2D
    >>> q: Quit
    >>> Select Case: ...

3.3.3. PyTorch

    >>> import ddesigner_api.pytorch.examples.examples_pytorch as ex
    >>> ex.main()
    >>> ====== PYTORCH Examples======
    >>> 1: Fixed  Float32 Input Conv2D
    >>> 2: Random Float32 Input Conv2D
    >>> 3: Fixed  Float32 Input Conv1D
    >>> 4: Fixed  Float32 Input Conv1DTranspose
    >>> 5: Random Float32 Input CascadeConv2D
    >>> 6: Random Float32 Input CascadeConv1D
    >>> q: Quit
    >>> Select Case: ...

3.3.4. Numpy

    >>> import ddesigner_api.numpy.examples.examples_numpy as ex
    >>> ex.main()
    >>> ====== NUMPY Examples======
    >>> 1: XWN Transform
    >>> 2: XWN Transform and Pruning
    >>> q: Quit
    >>> Select Case: ...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

DDesignerAPI-0.0.3.7-py3-none-any.whl (60.2 kB view details)

Uploaded Python 3

File details

Details for the file DDesignerAPI-0.0.3.7-py3-none-any.whl.

File metadata

File hashes

Hashes for DDesignerAPI-0.0.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 721765e1133095e3dfdda78588d7cc29c8916314b4eaffd5f1018f633d50ddf1
MD5 3c5ebdaf12a55c6e400d1cf4c83075d8
BLAKE2b-256 04174da6d4fe956c87ab1e2adc0f9f63a7b6d1ae1274b6cc50c85e64cf5758d2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page