Source code for akida.layers.input_data
from akida.core import (Layer, LayerParams, LayerType)
[docs]class InputData(Layer):
"""This layer is used to specify the input dimensions of a low bitwidth Model.
Models accepting 8-bit images must start with an InputConvolutional layer,
but layers accepting integer inputs with a lower bitwidth (i.e. not images)
and layers accepting signed inputs must start instead with an InputData
layer.
This layer does not modify its inputs: it just allows to define the Model
input dimensions and bitwidth.
Args:
input_shape (tuple): the 3D input shape.
input_bits (int, optional): input bitwidth. Defaults to 4.
input_signed (bool, optional): whether the input is signed or not.
Defaults to False.
name (str, optional): name of the layer. Defaults to empty string.
"""
def __init__(self, input_shape, input_bits=4, input_signed=False, name=""):
try:
params = LayerParams(
LayerType.InputData, {
"input_width": input_shape[0],
"input_height": input_shape[1],
"input_channels": input_shape[2],
"input_signed": 1 if input_signed else 0,
"input_bits": input_bits
})
# Call parent constructor to initialize C++ bindings
# Note that we invoke directly __init__ instead of using super, as
# specified in pybind documentation
Layer.__init__(self, params, name)
except BaseException:
self = None
raise