View Source TFLiteElixir.Coral (tflite_elixir v1.0.0-rc1)
This module contains libcoral C++ API, which provides convenient functions to perform inferencing and on-device transfer learning with TensorFlow Lite models on Coral devices.
Summary
Functions
Checks whether a tflite model contains any Edge TPU custom operator.
Returns a dequantized version of the given tensor.
An Edge TPU delegate over the bundled runtime, with its defaults.
An Edge TPU delegate, for attaching to an interpreter builder like any other.
Raising version of edge_tpu_delegate/0.
Raising version of edge_tpu_delegate/1.
Returns a list of connected edge TPU devices.
Returns TPU context or an error-tuple if requested TPU context is not available.
Returns a TPU context, or an error tuple if the requested one is not available.
See get_edge_tpu_context/0 for the options.
Raising version of get_edge_tpu_context/0.
Raising version of get_edge_tpu_context/1.
Creates a new interpreter instance for an Edge TPU model.
Raising version of make_edge_tpu_interpreter/2.
Functions
@spec contains_edge_tpu_custom_op?(%TFLiteElixir.FlatBufferModel{ initialized: term(), minimum_runtime: term(), model: term() }) :: boolean() | {:error, String.t()}
Checks whether a tflite model contains any Edge TPU custom operator.
@spec dequantize_tensor(reference(), non_neg_integer(), term()) :: [number()] | {:error, String.t()}
Returns a dequantized version of the given tensor.
An Edge TPU delegate over the bundled runtime, with its defaults.
An Edge TPU delegate, for attaching to an interpreter builder like any other.
libedgetpu is itself a TfLite delegate plugin, so this is
TFLiteElixir.Delegate.external/2 pointed at it -- which means an Edge TPU
interpreter can be built through the ordinary builder, composed with
TFLiteElixir.InterpreterBuilder.set_num_threads/2 and with other delegates.
make_edge_tpu_interpreter/2 builds its own interpreter internally and so
reaches none of that; it keeps working and is unchanged.
Options
:lib_path. Where libedgetpu is. Defaults to the copy bundled intflite_beam'spriv/libedgetpu, so a build made without Coral support can still reach a TPU by naming a runtime installed elsewhere.
Everything else is passed to the plugin as-is: device, "Performance",
"Usb.AlwaysDfu" and "Usb.MaxBulkInQueueLength", whose values mean what
get_edge_tpu_context/1 says they mean.
Raising version of edge_tpu_delegate/0.
Raising version of edge_tpu_delegate/1.
Returns a list of connected edge TPU devices.
Returns TPU context or an error-tuple if requested TPU context is not available.
Keyword Parameters
device:String.t(). Possible values are- "" -- any TPU device
- "usb" -- any TPU device on USB bus
- "pci" -- any TPU device on PCIe bus
- ":N" -- N-th TPU device, e.g. ":0"
- "usb:N" -- N-th TPU device on USB bus, e.g. "usb:0"
- "pci:N" -- N-th TPU device on PCIe bus, e.g. "pci:0"
Default value is
"".Consider 2 USB devices and 4 PCIe devices connected to the host. The way to reference specifically USB devices:
"usb:0", "usb:1".
The way to reference specifically PCIe devices:
"pci:0", "pci:1", "pci:2", "pci:3".
The generic way to reference all devices (no assumption about device type):
":0", ":1", ":2", ":3", ":4", ":5".
options:Map. Possible key-value pairs are"Performance":
String.t()- "Low"
- "Medium"
- "High"
- "Max"
Default is "Max".
Adjust internal clock rate to achieve different performance / power balance.
"Usb.AlwaysDfu":
booleantruefalse
Default is
false.Always perform device firmware update after reset. DFU is usually only necessary after power cycle.
"Usb.MaxBulkInQueueLength":
String.t()- ["0",.., "255"] (Default is "32")
Larger queue length may improve USB performance on the direction from device to host.
All TPUs are always enumerated in the same order assuming hardware configuration doesn't change (no added/removed devices between enumerations). Under the assumption above, the same index N will always point to the same device.
Returns a TPU context, or an error tuple if the requested one is not available.
See get_edge_tpu_context/0 for the options.
Raising version of get_edge_tpu_context/0.
Raising version of get_edge_tpu_context/1.
@spec make_edge_tpu_interpreter( %TFLiteElixir.FlatBufferModel{ initialized: term(), minimum_runtime: term(), model: term() }, reference() ) :: {:ok, reference()} | {:error, String.t()}
Creates a new interpreter instance for an Edge TPU model.
Also consider using make_edge_tpu_interpreter!().
Positional Parameters
model:FlatBufferModel. The tflite model.edgetpu_context:reference().The Edge TPU context, from
TFLiteElixir.Coral::get_edge_tpu_context.If left
nil, the given interpreter will not resolve an Edge TPU delegate. PoseNet custom op is always supported.
Keyword Parameters (todo)
resolver: May benilto use a default resolver.error_reporter: May benilto use default error reporter, but beware that if null, tflite runtime error messages will not return.interpreter: The pointer to receive the new interpreter.
Raising version of make_edge_tpu_interpreter/2.