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); } }
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(); }
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] }); }
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); } }