Protobuf files from TensorFlow and TensorFlow-Serving
Project description
TensorFlow Protobuf
Imagine you want to talk to your model deployed with TF-Serving using gPRC and protobuf.
To convert your NumPy array, you'd need to use make_tensor_proto
function:
import tensorflow as tf
def np_to_protobuf(data):
return tf.make_tensor_proto(data, shape=data.shape)
Boom - you have a 2 GB dependency to deal with!
TensorFlow Protobuf
This project takes only the part you actually need for that: the protobuf files (compiled).
Installing it
pip install tensorflow-protobuf==2.7.0
Available versions:
- 2.3.0
- 2.7.0
Using it
With it, your code will look like that:
from tensorflow.core.framework import tensor_pb2, tensor_shape_pb2, types_pb2
def dtypes_as_dtype(dtype):
if dtype == "float32":
return types_pb2.DT_FLOAT
raise Exception("dtype %s is not supported" % dtype)
def make_tensor_proto(data):
shape = data.shape
dims = [tensor_shape_pb2.TensorShapeProto.Dim(size=i) for i in shape]
proto_shape = tensor_shape_pb2.TensorShapeProto(dim=dims)
proto_dtype = dtypes_as_dtype(data.dtype)
tensor_proto = tensor_pb2.TensorProto(dtype=proto_dtype, tensor_shape=proto_shape)
tensor_proto.tensor_content = data.tostring()
return tensor_proto
def np_to_protobuf(data):
if data.dtype != "float32":
data = data.astype("float32")
return make_tensor_proto(data)
A bit more verbose, but without the 2GB baggage.
See a full example here: example.py
Have fun!
Building and compiling it
To see how we extract and compile the protobuf files, check tf-serving-proto.sh.
To use it:
TF_VERSION="2.3.0" ./tf-serving-proto.sh
Publishing on PyPI
If you want to build it for other versions and publish it, do this:
export TF_VERSION=2.7.0
echo "__version__ = '${TF_VERSION}'" > version.py
python -m venv env
source env/bin/activate
./tf-serving-proto.sh
pip install wheel twine
python setup.py sdist bdist_wheel
twine check dist/*
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
twine upload dist/*
rm -rf tensorflow/ tensorflow_serving/
rm -rf tensorflow_protobuf.egg-info/ build/ dist/ __pycache__/
rm version.py LICENSE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for tensorflow-protobuf-2.11.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb47200e2dff7ec15727524bcb224e409e48fe184ef93993dac00b0f60b99a77 |
|
MD5 | 806c0e0c6a1f058a0b44fef4bb396a02 |
|
BLAKE2b-256 | 3133dad686bfd7fcf37dff6e77cf20b5f445774e4551574f252c27ccf0d160d2 |
Hashes for tensorflow_protobuf-2.11.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58bacf0bc336f0b048e64c0ae61482c33bd321d5fe264b6c75b2d54d4c9da093 |
|
MD5 | bfe532ca64e2c07705ba8380cd338001 |
|
BLAKE2b-256 | d3e91cc7ffaaec97a6a76b65a08952f9d105307b48499f3e62b88b6ea84f70fc |