Example #1
0
        private Layer ConvertFullyConnected(tflite.Operator op)
        {
            var inputs  = op.GetInputsArray();
            var input   = _graph.Tensors(inputs[0]).Value;
            var options = op.BuiltinOptions <tflite.FullyConnectedOptions>().Value;
            var weights = _graph.Tensors(inputs[1]).Value;
            var bias    = _graph.Tensors(inputs[2]).Value;

            if (input.ShapeLength == 4 && (input.Shape(1) != 1 || input.Shape(2) != 1))
            {
                var flatten = new TensorflowFlatten(input.GetShapeArray().ToNCHW());
                var layer   = new FullyConnected(flatten.Output.Dimensions, _model.GetTensor <float>(weights), _model.GetTensor <float>(bias),
                                                 options.FusedActivationFunction.ToActivationFunction());
                layer.Input.SetConnection(flatten.Output);
                _inputs.Add(flatten.Input, inputs[0]);
                _outputs.Add(op.Outputs(0), layer.Output);
                return(layer);
            }
            else
            {
                var layer = new FullyConnected(input.GetShapeArray().ToNCHW(), _model.GetTensor <float>(weights), _model.GetTensor <float>(bias),
                                               options.FusedActivationFunction.ToActivationFunction());
                _inputs.Add(layer.Input, inputs[0]);
                _outputs.Add(op.Outputs(0), layer.Output);
                return(layer);
            }
        }
Example #2
0
        public void Infer(TensorflowFlatten layer, TensorflowFlattenLayerArgument argument, InferenceContext context)
        {
            var inputAlloc  = context.MainMemoryMap[layer.Input.Connection.From];
            var outputAlloc = context.MainMemoryMap[layer.Output];

            argument.Flags = K210LayerFlags.MainMemoryOutput;
            argument.MainMemoryInputAddress  = inputAlloc.GetAddress();
            argument.MainMemoryOutputAddress = outputAlloc.GetAddress();
        }
Example #3
0
 public TensorflowFlattenLayerArgument Convert(TensorflowFlatten layer, ConvertContext context)
 {
     return(new TensorflowFlattenLayerArgument
     {
         Width = (uint)layer.Input.Dimensions[3],
         Height = (uint)layer.Input.Dimensions[2],
         Channels = (uint)layer.Input.Dimensions[1]
     });
 }
Example #4
0
        private Layer ConvertL2Normalization(tflite.Operator op)
        {
            var inputs = op.GetInputsArray();
            var input  = _graph.Tensors(inputs[0]).Value;

            if (input.ShapeLength == 4 && (input.Shape(1) != 1 || input.Shape(2) != 1))
            {
                var flatten = new TensorflowFlatten(input.GetShapeArray().ToNCHW());
                var layer   = new L2Normalization(flatten.Output.Dimensions);
                layer.Input.SetConnection(flatten.Output);
                _inputs.Add(flatten.Input, inputs[0]);
                _outputs.Add(op.Outputs(0), layer.Output);
                return(layer);
            }
            else
            {
                var layer = new L2Normalization(input.GetShapeArray().ToNCHW());
                _inputs.Add(layer.Input, inputs[0]);
                _outputs.Add(op.Outputs(0), layer.Output);
                return(layer);
            }
        }