IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 联邦学习的修仙之路_1 -> 正文阅读

[人工智能]联邦学习的修仙之路_1

目录

1.前言

2.TFF

2.1TF基础

2.2 TF进阶

2.3 TF流程

2.4 TF其他


1.前言

最近一直在搞联邦学习,查了很多资料发现这个领域的科普文章多但真正一步一步讲到底的比较少。那我刚好把收集到的资料整理一下也顺便记录一下自己的学习历程。

在research的大环境里我还是一个小白,希望有机会和大佬多多交流~

2.TFF

最开始接触深度学习的时候搞得是TF,所以进联邦学习也是拿的TF的门票用的是TFF-tenserflow federated。Pytorch的话估计以后也是要搞,不过以后的事以后再说(?・?-・??)

2.1TF基础

既然提到tensorflow那就先回顾一下tf吧(记得上次打tensorflow已经是2020年的事了。TF的整体结构就是数据流表:构件图(数据与操作的执行步骤被描绘成一个图)+执行图(使用会话以执行构建好的图操作)

  • 图:是TF将计算表达为指令之间的依赖关系的一种表达方式
  • 会话:跨一个或多个设备运行数据流的机制
  • 张量:TF中的基本数据对象
  • 节点:提供图中执行的操作

中规定了变量(这样说好像不太对,参数赋值?)运算过程,但不执行。有两种方式定义图,一种是tensorflow调用默认图,另一种方式是自定义图。默认图比较简单会自动创建(所以无需理会,直接构建图内容即可)默认图可以用下面的代码调用并查看:

default_g = tf.get_default_graph()

自定义图需要使用到下面代码,创建后再进行构建图的内容(如参数赋值):

new_g = tf.Graph()
with new_g.as_default(): 

值得注意的是,一旦创建了自定义图开启会话时也需要标注(如下面斜体所示)。

会话包括两种开启方式,或者说两种使用方式。其中第二种方式使用了上下文管理器,不需要单独再次关闭会话,这两种区别在去资源的释放:

sess = tf.Session()

A = sess.run(B)

print(A)

sess.close()

with tf.Session(graph=new_g) as sess:

??????? A = sess.run(B)

print(A)

张量本身长由placeholder配合None定义,在执行图时其形状需要修改。通常有两种修改方法,一种是静态修改一种是动态修改。其中静态修改使用? set_shape(),其作用于张量本身(也就是张量本身会被修改)

设置静态维度使用? set_shape()????????????????查询静态维度使 tensorX.shape.as_list()

而动态修改则不同,它可以被理解成调用 tf.reshape() 方法,并不会直接作用于张量。所以需要有一个新的变量去接

动态的改变tensor的动态维度使用? tf.reshape()????????????????查询tensor的动态维度使用? tf.shape()

而除了形状外,张量的类型也可以被改变:

n = tf.cast(tensor, dtype)

和 tf.reshape 相同,并不会直接作用于张量,而是需要一个变量去接。

2.2 TF进阶

上面谈到一点即图中规定了变量,这里就稍微在说一下变量。在tensorflow中模型参数一般用变量存储。这里会使用关键字 tf.variable()

tf.Variable(initial_value=None, trainable=True, collections=None, name=None)

但在图中这些变量并没有被初始化,需要在会话外再进行初始化

init=tf.gloabal_variables_initializer()    #在外部

sess.run(init)    #在会话中

这里多啰嗦一句,前面的关键字太多了搞的有点昏(至少我有点晕了)。

  • placeholder用在构建于构建自变量和因变量(这个说法有点奇怪)其实也就是 x 和 y ,因为在传入参数(训练集)的时候时非常大,不可能一次性传入。所以要先placeholder占位置,之后再传入batch。
  • 也是因为placeholder的存在,无法定义这个数组的形状,所以要用None表示这个tensor的一个维度是不确定的,可以是任意的,(其具体维度值要在图运行过程中确定
  • 在构建模型的时候使用reshape(或者set_shape)重新定义形状,这里经常使用-1来进行自动填充。

此外,可以为变量定义命名空间是整个代码段更加可读和友好(属于上下文管理器):

with tf.variable_scope("my_scope")

2.3 TF流程

上面基本把tf的组件过了一遍,这里就简单过一下tf的流程。

准备数据 =》构造模型(定义模型参数,使用变量)=》构造损失函数 =》 优化损失(定义optimizer)=》显示的初始化变量 =》开启会话 =》开始训练

2.4 TF其他

以上提到的为组件部分,下面列出为基础API

tf.app
tf.image图形处理
tf.gfile

一组文件操作函数

tf.Summary用于生成可用的日志(TensorBoard)
tf.python_io读写文件
tf.train提供训练器
tf.nn神经网络的底层函数

下面列出的为高级API

tf.keras用于快速构建模型
tf.layers
tf.contrib
tf.estimator

其实基础API和高级API之间并没有隔着很厚的次元壁,一般情况下通过排列组合基础API也可以达到高级API的效果。

这篇文章主要聊了tf的一些基础知识,也顺便回顾一下搭建和训练的流程。计划下一篇博文聊一聊TFF的相关知识~

大家加油!俺先告辞了(? ˙o˙)?

这里放几个链接,是我在查资料的时候遇到的比较好的资源:

1. tensorflow中tensor的静态维度和动态维度:

https://blog.csdn.net/dcrmg/article/details/79766538?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-1.control&spm=1001.2101.3001.4242

https://www.cnblogs.com/mtcnn/p/9411708.html

2. Tensorflow中的Placeholder及用法:

https://zhuanlan.zhihu.com/p/81040163

3. TensorFlow的默认图与自定义图:

https://blog.csdn.net/dai_kai_kai/article/details/104788753

4. Keras: 基于 Python 的深度学习库:

https://keras.io/zh/

5. TensorFlow低阶API

https://www.cnblogs.com/lfri/p/10356655.html

6. Python的lambda函数用法(下一篇会用到):

https://zhuanlan.zhihu.com/p/80960485

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-27 16:13:42  更:2021-07-27 16:15:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/22 10:02:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码