Skip to main content

TensorFlow 之上的层,用于对加密数据进行机器学习。

项目描述

tf 加密

地位 执照 派皮 CircleCI 徽章 文档

tf-encrypted 是一个建立在TensorFlow之上的 Python 库,供研究人员和从业者尝试保护隐私的机器学习。它提供了一个类似于 TensorFlow 的接口,旨在使该技术易于使用,而无需首先成为机器学习、密码学、分布式系统和高性能计算方面的专家。

特别是,该库侧重于:

  • 可用性:API 及其底层设计理念使得开始、使用隐私保护技术并将其集成到预先存在的机器学习过程中变得容易。
  • 可扩展性:该架构支持并鼓励新密码协议和机器学习算法的实验和基准测试。
  • 性能:针对基于张量的应用程序进行优化并依赖 TensorFlow 的后端意味着运行时性能可与专门的独立框架相媲美。
  • 社区:以推动技术进步为主要目标,该项目鼓励协作和开源,而不是专有和封闭的解决方案。
  • 安全性:根据强大的安全性概念评估加密协议,并突出显示已知限制。

有关更多背景材料,请参阅下文或访问文档以了解有关如何使用该库的更多信息。

该项目从最初实施后的几位贡献者的努力中受益匪浅,其中最著名的是Dropout LabsOpenMined社区的成员。请参阅下文了解更多详情

安装和使用

tf-encrypted 作为PyPI上的一个包提供,支持 Python 3.5+,可以使用 pip 安装:

$ pip install tf-encrypted

以下是使用 tf-encrypted 对加密数据进行简单 matmul 的示例:

import tensorflow as tf
import tf_encrypted as tfe

def provide_input():
    # local TensorFlow operations can be run locally
    # as part of defining a private input, in this
    # case on the machine of the input provider
    return tf.ones(shape=(5, 10))

# define inputs
w = tfe.define_private_variable(tf.ones(shape=(10,10)))
x = tfe.define_private_input('input-provider', provide_input)

# define computation
y = tfe.matmul(x, w)

with tfe.Session() as sess:
    # initialize variables
    sess.run(tfe.global_variables_initializer())
    # reveal result
    result = sess.run(y.reveal())

有关更多信息,请查看文档中的完整入门指南。

背景与延伸阅读

以下文本提供了对该项目的进一步深入介绍:

项目状态

tf-encrypted 是目前不打算在生产环境中使用的实验性软件。重点是构建底层原语和技术,一些实际的安全问题推迟到后期。但是,要注意确保这些都不代表无法根据需要解决的基本问题。

已知限制

  • TensorFlow 网络子系统的元素似乎没有针对恶意用户进行足够的强化。代理或其他访问过滤方式可能足以缓解这种情况。
  • TensorFlow 中提供的伪随机生成器在密码学上并不强。自定义操作可以很容易地用来解决这个问题。

贡献

不要犹豫,发送拉取请求、打开问题或寻求帮助!

几个人已经对这个图书馆的发展产生了影响(按字母顺序):

多家公司投入了大量资源:

  • Dropout Labs继续赞助大量的研究和工程
  • OpenMined是最初想法的温床,并继续支持讨论和指导

执照

根据 Apache 许可证 2.0 版获得许可(请参阅LICENSEhttp://www.apache.org/licenses/LICENSE-2.0)。声明中指定的版权。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

tf-encrypt-0.0.1.tar.gz (59.1 kB 查看哈希

已上传 source

内置分布

tf_encrypt-0.0.1-py3-none-any.whl (891.0 kB 查看哈希

已上传 py3