def add_range_dynamic(self, name, input_names, output_name, start=0, step=1):
        """
        Add a range_dynamic layer that returns a tensor that contains evenly spaced values.
        This layer has up to three inputs or no input and three parameters.
        Refer to the ``RangeDynamicLayerParams`` message in the specification (NeuralNetwork.proto) for more details.

        Parameters
        ----------
        name: str
            The name of this layer.
        input_names: list of str
            The input blob names.
            If input size == 1: end is input, start and step are read from parameters
            If input size == 2: end, start are inputs, step is read from parameters
            If input size == 3: start, end, step are all inputs, none of the parameters are used.
        output_name: str
            The output blob name of this layer.
        start: int, optional
            Range parameter: start. Ignored if start is provided as input, default: 0.
        step: int, optional
            Range parameter: step. Ignored if step is provided as input, default: 1.

        See Also
        --------
        add_range_static
        """

        if len(input_names) < 1 or len(input_names) > 3:
            raise ValueError("RangeDynamic layer must have either 1, 2 or 3 inputs.")

        spec_layer = self._add_generic_layer(name, input_names, [output_name])
        spec_layer.rangeDynamic.MergeFromString(b"")
        spec_params = spec_layer.rangeDynamic

        spec_params.startValue = float(start)
        spec_params.stepSizeValue = float(step)

        self.rank_dict[output_name] = 1
        return spec_layer

        Add a range_dynamic layer that returns a tensor that contains evenly spaced values.
        This layer has up to three inputs or no input and three parameters.
        Refer to the ``RangeDynamicLayerParams`` message in the specification (NeuralNetwork.proto) for more details.

        Parameters
        ----------
        name: str
            The name of this layer.
        input_names: list of str
            The input blob names.
            If input size == 1: end is input, start and step are read from parameters
            If input size == 2: end, start are inputs, step is read from parameters
            If input size == 3: start, end, step are all inputs, none of the parameters are used.
        output_name: str
            The output blob name of this layer.
        start: int, optional
            Range parameter: start. Ignored if start is provided as input, default: 0.
        step: int, optional
            Range parameter: step. Ignored if step is provided as input, default: 1.

        See Also
        --------
        add_range_static
        
coremltools/models/neural_network/builder.py