qkeras.qlayers

Definition of quantization package.

Functions

get_auto_range_constraint_initializer(...)

Get value range automatically for quantizer.

get_constraint(identifier, quantizer)

Gets the initializer.

get_initializer(identifier)

Gets the initializer.

Classes

Clip([min_value, max_value, constraint, ...])

Clips weight constraint.

QActivation(*args, **kwargs)

Implements quantized activation layers.

QAdaptiveActivation(*args, **kwargs)

[EXPERIMENTAL] Implements an adaptive quantized activation layer using EMA.

QDense(*args, **kwargs)

Implements a quantized Dense layer.

QInitializer(initializer, use_scale, quantizer)

Wraps around Keras initializer to provide a fanin scaling factor.

class qkeras.qlayers.Clip(min_value=0.0, max_value=1.0, constraint=None, quantizer=None)[source]

Bases: Constraint

Clips weight constraint.

classmethod from_config(config)[source]

Instantiates a weight constraint from a configuration dictionary.

Example:

`python constraint = UnitNorm() config = constraint.get_config() constraint = UnitNorm.from_config(config) `

Parameters:

config – A Python dictionary, the output of get_config().

Returns:

A keras.constraints.Constraint instance.

get_config()[source]

Returns configuration of constraint class.

class qkeras.qlayers.QActivation(*args, **kwargs)[source]

Bases: Layer

Implements quantized activation layers.

call(inputs)[source]
compute_output_shape(input_shape)[source]
classmethod from_config(config)[source]

Creates an operation from its config.

This method is the reverse of get_config, capable of instantiating the same operation from the config dictionary.

Note: If you override this method, you might receive a serialized dtype config, which is a dict. You can deserialize it as follows:

```python if “dtype” in config and isinstance(config[“dtype”], dict):

policy = dtype_policies.deserialize(config[“dtype”])

```

Parameters:

config – A Python dictionary, typically the output of get_config.

Returns:

An operation instance.

get_config()[source]

Returns the config of the object.

An object config is a Python dictionary (serializable) containing the information needed to re-instantiate it.

get_prunable_weights()[source]
get_quantization_config()[source]
class qkeras.qlayers.QAdaptiveActivation(*args, **kwargs)[source]

Bases: Layer

[EXPERIMENTAL] Implements an adaptive quantized activation layer using EMA.

This layer calculates an exponential moving average of min and max of the activation values to automatically determine the scale (integer bits) of the quantizer used in this layer.

build(input_shape)[source]
call(inputs, training=False)[source]
compute_output_shape(input_shape)[source]
get_config()[source]

Returns the config of the object.

An object config is a Python dictionary (serializable) containing the information needed to re-instantiate it.

get_prunable_weights()[source]
get_quantization_config()[source]
get_weights()[source]

Return the values of layer.weights as a list of NumPy arrays.

set_weights(weights)[source]

Sets the values of layer.weights from a list of NumPy arrays.

class qkeras.qlayers.QDense(*args, **kwargs)[source]

Bases: Dense

Implements a quantized Dense layer.

call(inputs)[source]
compute_output_shape(input_shape)[source]
get_config()[source]

Returns the config of the object.

An object config is a Python dictionary (serializable) containing the information needed to re-instantiate it.

get_prunable_weights()[source]
get_quantization_config()[source]
get_quantizers()[source]
class qkeras.qlayers.QInitializer(initializer, use_scale, quantizer)[source]

Bases: Initializer

Wraps around Keras initializer to provide a fanin scaling factor.

classmethod from_config(config)[source]

Instantiates an initializer from a configuration dictionary.

Example:

`python initializer = RandomUniform(-1, 1) config = initializer.get_config() initializer = RandomUniform.from_config(config) `

Parameters:

config – A Python dictionary, the output of get_config().

Returns:

An Initializer instance.

get_config()[source]

Returns the initializer’s configuration as a JSON-serializable dict.

Returns:

A JSON-serializable Python dict.

qkeras.qlayers.get_auto_range_constraint_initializer(quantizer, constraint, initializer)[source]

Get value range automatically for quantizer.

Parameters:
  • quantizer – A quantizer class in quantizers.py.

  • constraint – A keras constraint.

  • initializer – A keras initializer.

Returns:

a tuple (constraint, initializer), where

constraint is clipped by Clip class in this file, based on the value range of quantizer. initializer is initializer contraint by value range of quantizer.

qkeras.qlayers.get_constraint(identifier, quantizer)[source]

Gets the initializer.

Parameters:
  • identifier – A constraint, which could be dict, string, or callable function.

  • quantizer – A quantizer class or quantization function

Returns:

A constraint class

qkeras.qlayers.get_initializer(identifier)[source]

Gets the initializer.

Parameters:

identifier – An initializer, which could be dict, string, or callable function.

Returns:

A initializer class

Raises:

ValueError – An error occurred when quantizer cannot be interpreted.