Implementation:Tensorflow Tfjs Python Inference
| Knowledge Sources | |
|---|---|
| Domains | Deep_Learning, Inference, Python_Tooling |
| Last Updated | 2026-02-10 06:00 GMT |
Overview
This module provides a Python helper function for running TensorFlow.js model inference by invoking a Node.js binary via subprocess. It constructs the CLI command with the required model path, input directory, and output directory arguments, then executes it and captures stdout/stderr. If the subprocess exits with a non-zero return code, a ValueError is raised containing the stderr output.
Code Reference
Source Location
tfjs-inference/python/inference.py (GitHub)
Function Signature
def predict(binary_path,
model_path,
inputs_dir,
outputs_dir,
backend=None,
tf_output_name_file=None):
Imports
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import subprocess
I/O Contract
| Parameter | Type | Description |
|---|---|---|
binary_path |
str | Path to the Node.js inference binary (absolute preferred) |
model_path |
str | Directory containing the TensorFlow.js model JSON file |
inputs_dir |
str | Directory with input data, shape, and dtype files |
outputs_dir |
str | Directory where output data, shape, and dtype files are written |
backend |
str or None | Optional backend selection (cpu or wasm); defaults to cpu
|
tf_output_name_file |
str or None | Optional file specifying TF output names; uses model defaults if absent |
| Output | Description |
|---|---|
| (none) | On success, inference results are written to outputs_dir
|
ValueError |
Raised if subprocess exits with non-zero status, containing stderr |
Implementation Details
The function builds a command list from the provided arguments and spawns the process using subprocess.Popen. Communication is performed via popen.communicate() to capture both stdout and stderr. Optional flags for backend selection and output name configuration are appended only when provided.
tfjs_inference_command = [
binary_path, model_path_option, inputs_dir_option, outputs_dir_option
]
if tf_output_name_file:
tfjs_inference_command.append('--tf_output_name_file=' + tf_output_name_file)
if backend:
tfjs_inference_command.append('--backend=' + backend)
popen = subprocess.Popen(
tfjs_inference_command,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = popen.communicate()
Usage Example
from inference import predict
predict(
binary_path='/usr/local/bin/tfjs-inference',
model_path='/models/my_model/',
inputs_dir='/data/inputs/',
outputs_dir='/data/outputs/',
backend='cpu'
)
# Results are written to /data/outputs/ as data, shape, and dtype files
Related Pages
- Tensorflow_Tfjs_MathBackendCPU - The CPU backend that may serve as the execution backend for inference