Source code for tensorlayer.layers.scale

#! /usr/bin/python
# -*- coding: utf-8 -*-

import tensorflow as tf

from tensorlayer import logging
from tensorlayer.initializers import constant
from tensorlayer.layers.core import Layer

__all__ = [
    'Scale',
]


[docs]class Scale(Layer): """The :class:`Scale` class is to multiple a trainable scale value to the layer outputs. Usually be used on the output of binary net. Parameters ---------- init_scale : float The initial value for the scale factor. name : a str A unique layer name. Examples ---------- >>> inputs = tl.layers.Input([8, 3]) >>> dense = tl.layers.Dense(n_units=10)(inputs) >>> outputs = tl.layers.Scale(init_scale=0.5)(dense) >>> model = tl.models.Model(inputs=inputs, outputs=[dense, outputs]) >>> dense_out, scale_out = model(data, is_train=True) """ def __init__( self, init_scale=0.05, name='scale', ): super(Scale, self).__init__(name) self.init_scale = init_scale self.build((None, )) self._built = True logging.info("Scale %s: init_scale: %f" % (self.name, self.init_scale)) def __repr__(self): s = '{classname}(' s += 'init_scale={init_scale},' s += 'name={name}' s += ")" return s.format(classname=self.__class__.__name__, **self.__dict__) def build(self, inputs_shape): self.scale = self._get_weights("scale", shape=[1], init=constant(value=self.init_scale)) # @tf.function def forward(self, inputs): outputs = inputs * self.scale return outputs