tensorflow参数分配策略
? tensorflow提供了3种参数分配策略: ? ? 1. 循环ps放(_RoundRobinStrategy) ? ? 2. 每次变量放的时候随机选一个(RandomStrategy) ? ? 3. 每次初始化像负载最小的ps放(GreedyLoadBalancingStrategy) ? 问题:在tensorflow中所有的节点都是operation,tensorflow怎么区分那些operation是参数?那些是计算的呢? ? ? 1.?_RoundRobinStrategy (tensorflow/tensorflow/python/training/device_setter.py) class _RoundRobinStrategy(object): """Returns the next ps task index for placement in round-robin order. This class is not to be used directly by users. See instead `replica_device_setter()` below. """ def __init__(self,num_tasks): """Create a new `_RoundRobinStrategy`. Args: num_tasks: Number of ps tasks to cycle among. """ self._num_tasks = num_tasks self._next_task = 0 def __call__(self,unused_op): """Choose a ps task index for the given `Operation`. Args: unused_op: An `Operation` to be placed on ps. Returns: The next ps task index to use for the `Operation`. Returns the next index,in the range `[offset,offset + num_tasks)`. """ task = self._next_task self._next_task = (self._next_task + 1) % self._num_tasks return task 使用方法: ps_strategy = _RoundRobinStrategy(ps_tasks) __init__()方法初始化时,创建ps_strategy对象的参数ps_tasks表示ps的个数,初始创建时self._num_tasks =?ps的个数;self._next_task为0。 __call__()方法调用时返回task,是上次调用设置的self._next_task;然后更新self._next_task,self._next_task加1再对ps的个数取模。 ? 2. RandomStrategy(/tensorflow/tensorflow/contrib/training/python/training/device_setter.py) ? 3. GreedyLoadBalancingStrategy(/tensorflow/tensorflow/contrib/training/python/training/device_setter.py) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- delphi – 将相同的对象添加到TObjectDictionary两次可以释
- Go实战--golang中使用markdown(russross/blackfriday)
- 编译Lua以及编写动态扩展
- VB用一张数据表和TreeView控件生成无限级目录树
- vb.net – 如何添加功能和函数参数的描述?
- java – Spring OAuth2“访问此资源需要完全身份验证”
- Golang Template
- set_exception_handler函数在ThinkPHP中的用法
- lua debug库的一些玩法
- [Lintcode]152. Combinations/[Leetcode]77. Combinations