Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Arbitrary precision integers in TensorFlow.

Project description

TF Big

TF Big adds big number support to TensorFlow, allowing computations to be performed on arbitrary precision integers. Internally these are represented as variant tensors of GMP values, and exposed in Python through the tf_big.Tensor wrapper for convenience. For importing and exporting, numbers are typically expressed as strings.

PyPI CircleCI Badge

Usage

import tensorflow as tf
import tf_big

# load large values as strings
x = tf_big.constant(["100000000000000000000", "200000000000000000000"])

# load ordinary TensorFlow tensors
y = tf_big.convert_to_tensor(tf.constant([3, 4]))

# perform computation as usual
z = x * y

# use TensorFlow sessions to evalutate the results
with tf.Session() as sess:
  res = sess.run(z)
  print(res)

Installation

Python 3 packages are available from PyPI:

pip install tf-big

See below for further instructions for setting up a development environment.

Development

Requirements

We recommend using Miniconda or Anaconda to set up and use a Python 3.5 or 3.6 environment for all instructions below:

conda create -n tfbig-dev python=3.6
source activate tfbig-dev

Ubuntu

The only requirement for Ubuntu is to have docker installed. This is the recommended way to build custom operations for TensorFlow. We provide a custom development container for TF Big with all dependencies already installed.

macOS

Setting up a development environment on macOS is a little more involved since we cannot use a docker container. We need four things:

Using Homebrew we first make sure that both Bazel and GMP are installed:

brew tap bazelbuild/tap
brew install bazelbuild/tap/bazel
brew install gmp
brew install mmv

The remaining PyPI packages can then be installed using:

pip install -r requirements-dev.txt

Testing

Ubuntu

Run the tests on Ubuntu by running the make test command inside of a docker container. Right now, the docker container doesn't exist on docker hub yet so we must first build it:

docker build -t tf-encrypted/tf-big:0.1.0 .

Then we can run make test:

sudo docker run -it \
  -v `pwd`:/opt/my-project -w /opt/my-project \
  tf-encrypted/tf-big:0.1.0 /bin/bash -c "make test"

macOS

Once the development environment is set up we can simply run:

make test

This will install TensorFlow if not previously installed and build and run the tests.

Building pip package

CircleCI currently builds the pip packages for us. If you have a need to do it on your own you can just run make build. For linux, doing it inside the tensorflow/tensorflow:custom-op container is recommended.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for tf-big, version 0.1.3
Filename, size File type Python version Upload date Hashes
Filename, size tf_big-0.1.3-cp35-cp35m-manylinux1_x86_64.whl (980.2 kB) File type Wheel Python version cp35 Upload date Hashes View hashes
Filename, size tf_big-0.1.3-cp36-cp36m-macosx_10_7_x86_64.whl (851.8 kB) File type Wheel Python version cp36 Upload date Hashes View hashes
Filename, size tf_big-0.1.3-cp36-cp36m-manylinux1_x86_64.whl (980.2 kB) File type Wheel Python version cp36 Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page