PondTensor

PondTensor is the tensor type you will interact with most.

Generally, you will never instantiate a tensor directly, rather you create them through protocol.

pondPrivateTensor = prot.define_private_variable(np.array([1,2,3,4]))
pondPublicTensor = prot.define_private_variable(np.array([1,2,3,4]))
class tf_encrypted.protocol.pond.PondTensor(prot, is_scaled)[source]

This class functions mostly as a convenient way of exposing operations directly on the various tensor objects, ie allowing one to write x + y instead of prot.add(x, y). Since this functionality is shared among all tensors we put it in this superclass.

This class should never be instantiated on its own. Instead you should use your chosen protocols factory methods:

x = prot.define_private_input(tf.constant(np.array([1,2,3,4])))
y = prot.define_public_input(tf.constant(np.array([4,5,6,7])))

z = x + y

with config.Session() as sess:
    answer = z.reveal().eval(sess)

    print(answer) # => [5, 7, 9, 11]
add(other)[source]

Add other to this PondTensor. This can be another tensor with the same backing or a primitive.

This function returns a new PondTensor and does not modify this one.

Parameters:other (PondTensor) – a or primitive (e.g. a float)
Returns:A new PondTensor with other added.
Return type:PondTensor
dot(other)[source]

Alias for matmul()

Returns:A new PondTensor
Return type:PondTensor
expand_dims()[source]
See:tf.expand_dims
Returns:A new PondTensor
Return type:PondTensor
matmul(other)[source]

MatMul this tensor with other. This will perform matrix multiplication, rather than elementwise like mul()

Parameters:other (PondTensor) – to subtract
Returns:A new PondTensor
Return type:PondTensor
mul(other)[source]

Multiply this tensor with other

Parameters:other (PondTensor) – to multiply
Returns:A new PondTensor
Return type:PondTensor
reduce_max(axis: int) → tf_encrypted.protocol.pond.PondTensor[source]
See:tf.reduce_max
Parameters:axis (int) – The axis to take the max along
Return type:PondTensor
Returns:A new pond tensor with the max value from each axis.
reduce_sum(axis=None, keepdims=None)[source]

Like tensorflow.reduce_sum()

Parameters:
  • axis (int) – The axis to reduce along
  • keepdims (bool) – If true, retains reduced dimensions with length 1.
Returns:

A new PondTensor

Return type:

PondTensor

reshape(shape: List[int]) → tf_encrypted.protocol.pond.PondTensor[source]
See:tf.reshape
Parameters:shape (List[int]) – The new shape of the tensor.
Return type:PondTensor
Returns:A new tensor with the contents of this tensor, but with the new specified shape.
shape
Return type:List[int]
Returns:The shape of this tensor.
square()[source]

Square this tensor.

Returns:A new PondTensor
Return type:PondTensor
sub(other)[source]

Subtract other from this tensor.

Parameters:other (PondTensor) – to subtract
Returns:A new PondTensor
Return type:PondTensor
sum(axis=None, keepdims=None)[source]

See PondTensor.reduce_sum()

transpose(perm=None)[source]

Transpose this tensor.

See tensorflow.transpose()

Parameters:List[int] – A permutation of the dimensions of this tensor.
Returns:A new PondTensor
Return type:PondTensor
truncate()[source]

Truncate this tensor.

TODO

Returns:A new PondTensor
Return type:PondTensor