Skip to content
RemObjects Island platform bindings for TensorFlow C Api, CPU native and cross-platform
C# Pascal C Other
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Demos/ApiSamples
Images
Island
Tools/protogen 2.3.16
.gitignore
LICENSE
README.md

README.md

TensorFlow-Island

RemObjects Island platform bindings for TensorFlow C API v1.15.0. Designed for high-performance AI/ML-Integerated Intelligent Transport Systems (ITS) applications.

CPU-Native Multi-language Multi-Platform Support

TensorFlow-Island is a high-level abstraction of TensorFlow C-API, in several modern languages: Swift, Oxygene, Java, Go and C#. Tensor-Island is dependent on the RemObjects Elements compiler, which is based on the LLVM compiler infrastructure capable of genenating CPU-native machine code on Windows, Linux, and MacOS.

The languages (Swift, Oxygene, Java, Go and C#) as supported by TensorFlow-Island can be mixed interchangably at source code level. They are all compiled into CPU-native machine code by the RemObject Elements compiler, without dependencies on .NET CLR, JVM, or any virtual machine environment. This fits the design objectives (see below) of TenorFlow-Island, hence the reason (for the selection of RemObject Elements compiler).

Inspiration

TensorFlow-Island is initially inspired by TensorFlow4Delphi. The framework design is also infuenced by TensorFlowSharp, with new insights, adjustments, and enhancements.

The following diagram illustrates the TensorFlow-Island architecture.

TensorFlow-Island Diagram

Difference with other TensorFlow bindings

The difference between TensorFlow-Island and other wellknown TensorFlow bindings, for example, TensorFlow.NET is:

  • Multiple programming language support, including Oxygene, Swift, Java, Go, and C#, thanks to the RemObjects LLVM-based Elements compiler;
  • CPU-native machine code, without dependencies on JVM, .NET CLR, or Python/CPython intepreter;
  • Direct acces to TensorFlow C API; no .NET P-Invoke, marshalling, or JNI wrappers involved;
  • TensorFlow-Island itself is a light-weight abstraction. Unlike TensorFlow.NET, TensorFlow-Island does not intend for a direct translation of existing Python-based TensorFlow code. Rather, the design is to have a CPU-native binding of TensorFlow C API with modern language features (e.g., the Dispose Pattern, Lamda Expression, LinQ) to help manage resources, streamline model development, and efficient run-time performance, all in one package.

Design Objectives

  • A higher level abstraction of TensorFlow C-API, cross-platform (Windows, Linux and MacOS), and CPU-native machine code;
  • Multiple language support for Oxygene, Swift, Java, Go and C#, and multiple platforms support for Windows, Linux and MacOS;
  • Support performance-critical machine-learning and Artifical Intelligence algorithms;
  • Provides a foundational Computational Graph framework, with an additional set of customized TensorFlow Ops for Traffic and Transportation applications, including Traffic Signal Optimizations, Smart Driver API for Connected Vehicle Application Simulation, and Innovative Traffic Simulation Calibration;
  • Provides a foundational Computational Graph framework to be integrated in PTV Vissim Microscopic Traffic Simulator, enabling GPU computing for External Driver Model, and Signal Control API modules.

Compilers Toolchain Requirements

TensorFlow Island requires the RemObjects Elements compiler. For commmercial, open-source, or academic applications, please contact RemObjects for different licensing options.

License

MIT License (c) 2019-2020. Copyright Wuping Xin and KLD Engineering, P. C.

You can’t perform that action at this time.