加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

tensorflow参数分配策略

发布时间:2020-12-14 04:18:28 所属栏目:大数据 来源:网络整理
导读:? tensorflow提供了3种参数分配策略: ? ? 1. 循环ps放(_RoundRobinStrategy) ? ? 2. 每次变量放的时候随机选一个(RandomStrategy) ? ? 3. 每次初始化像负载最小的ps放(GreedyLoadBalancingStrategy) ? 问题 :在tensorflow中所有的节点都是operation

?

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读