首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深度学习TensorFlow道术5

你若盛开 清风自来

一、子图执行:TF数据流图中的每个节点有一个节点名和多个输出,每个输出通过节点名和端口(port)来标识,例如,name:0代表name节点第一个输出,name:1代表name节点第二个输出。TF支持单独执行任意子图,可以在Client的Session.Run方法中指定需要执行的子图,包括两个输入参数:一是输入节点,通过列表指定,TF自动替换为feed节点,二是输出节点,通过列表指定,TF自动连接至fetch节点,输出结果返回给Client。如下图所示,输入为,输出为,则子图只执行a、b、c、f节点,e和d节点不执行。

二、设备约束:Client可以指定node能置放到哪些device上,例如,只能在GPU上执行、只能在/job:worker/task:17上执行等。置放算法在将node放置到device上时,不仅要考虑device的计算时间和通信时间,还需要考虑node对device的约束条件。

三、控制流:控制流可以使得机器学习算法更加简洁和高效,例如,Switch和Merge操作可以通过boolean张量的值来跳过一些子图执行,Enter、Leave和NextIteration操作可以执行迭代。TF使用分布式协同机制来控制数据流图执行,通常,一个循环可以包含多个节点,这些节点可以置放到不同设备上,管理循环状态成为分布式计算的一个难题,TF通过图重写来解决此问题,划分图时,TF在每个划分上自动添加控制节点,这些控制节点作为一个小状态机,来管理每次迭代的起止,确保整个循环终止。TF通常使用梯度下降方法来训练机器学习模型,当数据流图中包含控制流节点时,在反向计算梯度时,需要考虑这些控制流节点,例如,if-conditional计算梯度时,需要知道执行了哪个分支,然后将梯度计算应用到这个分支上。

四、输入操作:输入数据的来源有两种方法,一是可以通过feed节点提供,二是采用特定的输入节点,例如,文件名,这使得worker可以直接从存储系统读取数据,而不是先从存储系统到Client,再从Client到worker。

五、队列:队列通过Enqueue和Dequeue对队列中数据进行处理,允许数据流图的不同部分可以异步执行,例如,前一份数据还在执行时,可以并行从磁盘文件中预取下一份数据。在一般的FIFO队列上,TF实现了一个shuffling队列,可以对内存中的元素进行随机洗牌,这在机器学习算法中比较常见。

六、容器:容器是用来管理长期存活的可变状态的机制。Variable后备存储存放在一个容器中。默认的容器在程序终止前都是存活的,我们也可以定义其他容器。容器可以通过清空全部内容进行重置。使用容器,可以在不同的数据流图中不同Session中共享数据。

参考文献:

TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems. 2015.

TensorFlow: A System for Large-Scale Machine Learning. 2016.

未名小宇宙,一直在您身边,欢迎关注!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171217A04J1400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券