https://www.tensorflow.org/federated/

  • TensorFlow Federated (TFF) 是一个开源框架,用于对分散式数据进行机器学习和其他计算。我们开发 TFF 是为了促进联合学习 (FL) 的开放研究和实验,FL 是一种机器学习方法,使我们能够跨多个参与客户端训练共享全局模型,并将训练数据保存在本地。例如,FL 已被用于训练手机键盘的预测模型,但不会将敏感的输入数据上传到服务器。

    开发者可以利用借助 TFF 对其模型和数据模拟所包含的联合学习算法,以及实验新算法。TFF 提供的构建块也可用于实现非学习计算,例如对分散式数据进行聚合分析。TFF 的接口可以分成两层:

  • chevron_right

    Federated Learning (FL) API

    该层提供了一组高阶接口,使开发者能够将包含的联合训练和评估实现应用于现有的 TensorFlow 模型。
  • chevron_right

    Federated Core (FC) API

    该系统的核心是一组较低阶接口,可以通过在强类型函数式编程环境中结合使用 TensorFlow 与分布式通信运算符,简洁地表达新的联合算法。这一层也是我们构建联合学习的基础。
  • 借助 TFF,开发者能够以声明方式表达联合计算,从而将它们部署到不同的运行时环境中。TFF 包含一个用于实验的单机模拟运行时。请访问相关教程,并亲自试用!
     
    from six.moves import range
    import tensorflow as tf
    import tensorflow_federated as tff
    from tensorflow_federated.python.examples import mnist
    tf.compat.v1.enable_v2_behavior() # Load simulation data.
    source, _ = tff.simulation.datasets.emnist.load_data()
    def client_data(n):
      dataset = source.create_tf_dataset_for_client(source.client_ids[n])
      return mnist.keras_dataset_from_emnist(dataset).repeat(10).batch(20) # Pick a subset of client devices to participate in training.
    train_data = [client_data(n) for n in range(3)] # Grab a single batch of data so that TFF knows what data looks like.
    sample_batch = tf.nest.map_structure(
        lambda x: x.numpy(), iter(train_data[0]).next()) # Wrap a Keras model for use with TFF.
    def model_fn():
      return tff.learning.from_compiled_keras_model(
          mnist.create_simple_keras_model(), sample_batch) # Simulate a few rounds of training with the selected client devices.
    trainer = tff.learning.build_federated_averaging_process(model_fn)
    state = trainer.initialize()
    for _ in range(5):
      state, metrics = trainer.next(state, train_data)
      print (metrics.loss)

TensorFlow Federated:基于分散式数据的机器学习的更多相关文章

  1. H2O是开源基于大数据的机器学习库包

    H2O是开源基于大数据的机器学习库包 H2O能够让Hadoop做数学,H2O是基于大数据的 统计分析 机器学习和数学库包,让用户基于核心的数学积木搭建应用块代码,采取类似R语言 Excel或JSON等 ...

  2. 字节跳动流式数据集成基于Flink Checkpoint两阶段提交的实践和优化

    背景 字节跳动开发套件数据集成团队(DTS ,Data Transmission Service)在字节跳动内基于 Flink 实现了流批一体的数据集成服务.其中一个典型场景是 Kafka/ByteM ...

  3. 徒手打造基于Spark的数据工厂(Data Factory):从设计到实现

    在大数据处理和人工智能时代,数据工厂(Data Factory)无疑是一个非常重要的大数据处理平台.市面上也有成熟的相关产品,比如Azure Data Factory,不仅功能强大,而且依托微软的云计 ...

  4. [开发技巧]·TensorFlow中numpy与tensor数据相互转化

    [开发技巧]·TensorFlow中numpy与tensor数据相互转化 个人主页–> https://xiaosongshine.github.io/ - 问题描述 在我们使用TensorFl ...

  5. DCOMP——分散式计算

    新型网络DCOMP 据国外媒体2017年11月7日报道,曾经发明互联网的秘密机构“美国国防部高级研究计划局(DARPA)”如今正致力于研发能够完胜互联网的新网络,并且启动了一项链接物联网.智能手机.智 ...

  6. tensorflow实现基于LSTM的文本分类方法

    tensorflow实现基于LSTM的文本分类方法 作者:u010223750 引言 学习一段时间的tensor flow之后,想找个项目试试手,然后想起了之前在看Theano教程中的一个文本分类的实 ...

  7. 一文详解如何用 TensorFlow 实现基于 LSTM 的文本分类(附源码)

    雷锋网按:本文作者陆池,原文载于作者个人博客,雷锋网已获授权. 引言 学习一段时间的tensor flow之后,想找个项目试试手,然后想起了之前在看Theano教程中的一个文本分类的实例,这个星期就用 ...

  8. (三)使用链式数据实现包(java)

    目标: 1) 描述数据的链式组织方式 2) 描述如何在链式节点链的开头添加新节点 3) 描述如何删除链式节点链的首节点 4) 描述如何在链式节点链中找到某个数据 5) 使用链式节点链实现ADT包 6) ...

  9. 使用unity3d和tensorflow实现基于姿态估计的体感游戏

    使用unity3d和tensorflow实现基于姿态估计的体感游戏 前言 之前做姿态识别,梦想着以后可以自己做出一款体感游戏,然而后来才发现too young.但是梦想还是要有的,万一实现了呢.趁着p ...

随机推荐

  1. jdbc大略

    一.概述JDBC JDBC从物理结构上说就是Java语言访问数据库的一套接口集合. 从本质上来说就是调用者(程序员)和实现者(数据库厂商)之间的协议. JDBC API: 使得开发人员可以使用纯Jav ...

  2. RHEL 6.6配置网易CentOS镜像的yum源小结

       之前没有使用过网易CentOS镜像的yum源,最近由于需要,遂在一台测试服务器验证.测试了一下如何配置使用网易的Cent0S的yum源.此文仅仅是笔记性质,参考了网上大量资料(文末"参 ...

  3. mssql sqlserver 将逗号分隔的一列数据转换为多列数据的方法分享

    转自:http://www.maomao365.com/?p=10278  摘要: 下文讲述sqlserver中将使用逗号组合的单列数据,分隔为多列数据的方法 实验环境:sql server 2012 ...

  4. hidraw设备简要分析

    关键词:hid.hidraw.usbhid.hidp等等. 下面首先介绍hidraw设备主要用途,然后简要分析hidraw设备驱动(但是不涉及到相关USB/Bluwtooth驱动),最后分析用户空间接 ...

  5. 【5】Android Service 与 AIDL

    前言:本系列仅介绍基本大体的使用步骤,而不对每个步骤进行细致的讲解.读者可作为已经对相关内容有所了解后的快速查阅. 一.单应用内Service的使用 Service组件与Activity以IBinde ...

  6. 一段tomcat的maven插件配置

    <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-mave ...

  7. AHOI 2009 维护序列

    洛谷 P2023 [AHOI2009]维护序列 洛谷传送门 题目描述 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成. 有长为N的数列,不妨设为a1,a2,-,aN .有如下三种操作形式 ...

  8. LG1840 Color the Axis 线段树

    菜的人就要写简单题 为了练习手速来写这样一道 珂朵莉树 线段树简单题 没啥可说的,注意修改操作中要判一下 val=0 #include<bits/stdc++.h> using names ...

  9. 解决SQL Server中无管理员账户权限问题

    遇到忘记SQL Server管理员账户密码或管理员账户被意外删除的情况,如何在SQL Server中添加一个新的管理员账户?按一下步骤操作可添加一个windows账户到SQL Server中,并分配数 ...

  10. [ Python入门教程 ] Python生成随机数模块(random)使用方法

    1.使用randint(a,b)生成指定范围内的随机整数.randint(a,b)表示从序列range([a,b])中获取一个随机数,包括b. >>> random.randint( ...