小编dpa*_*ted的帖子

tf.distribute.Strategy.scope() 里面必须有什么?

我目前正在使用 tensorflow 2.0 中的分发策略,如下所述https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/distribute/Strategy

我想知道什么必须进入一个with ...scope()块,什么是“可选”。

具体操作如下。我是否必须将 ... 放入 a with ...scope()for distribution 才能工作?:

  • 优化器创建
  • 数据集创建
  • 数据集experimental_distribute_dataset
  • apply_gradients 调用
  • 循环的数据集迭代
  • Experiment_run_v2

我玩了一会儿,即使我根本不使用,我的代码似乎也能工作with ...scope。我很困惑这是否有一些我现在没有看到的副作用。

没有的代码scope

strat = tf.distribute.MirroredStrategy()

BATCH_SIZE_PER_REPLICA = 5

print('Replicas: ', strat.num_replicas_in_sync)

global_batch_size = (BATCH_SIZE_PER_REPLICA * strat.num_replicas_in_sync)

dataset = tf.data.Dataset.from_tensors(tf.random.normal([100])).repeat(1000).batch(
    global_batch_size)

g = Model('m', 10, 10, 1, 3)

dist_dataset = strat.experimental_distribute_dataset(dataset)

@tf.function
def train_step(dist_inputs):
  def step_fn(inputs):
    print([(v.name, v.device) for v in g.trainable_variables])
    return g(inputs)

  out = strat.experimental_run_v2(step_fn, args=(dist_inputs,))

for inputs in …
Run Code Online (Sandbox Code Playgroud)

python tensorflow tensorflow2.0

12
推荐指数
2
解决办法
5539
查看次数

多GPU /塔设置Tensorflow 1.2 Estimator

我希望把我_model_fnEstimator成多GPU解决方案.

有没有办法在Esitmator API中执行此操作,或者是否必须显式编写设备放置和同步代码.

我知道我可以用tf.device('gpu:X')我的模型在GPU上X.我也知道我可以循环使用可用的GPU名称来跨多个GPU复制我的模型.我也知道我可以为多个GPU使用单个输入队列.

我不知道的是哪些部分(优化器,损耗计算),我实际上可以移动到GPU以及我必须同步计算的地方.

Cifar10示例中我可以看出,我只需要同步渐变.

特别是在使用时

train_op = tf.contrib.layers.optimize_loss(
        loss=loss,
        global_step=tf.contrib.framework.get_global_step(),
        learning_rate=learning_rate,
        learning_rate_decay_fn=_learning_rate_decay_fn,
        optimizer=optimizer)
Run Code Online (Sandbox Code Playgroud)

我不能再打电话optimizer.compute_gradients()optimizer.apply_gradients()手动打电话,因为这是由内部处理的.optimize_loss(..)

我想知道如何在cifar10示例Cifar10-MultiGPU中完成平均渐变,或者这是否是正确的方法Estimator.

python multi-gpu tensorflow

7
推荐指数
1
解决办法
2136
查看次数

将 tf.data.Dataset 包装到 tf.function 中会提高性能吗?

鉴于以下两个示例,在签名时是否有性能改进tf.data.Dataset

数据集不在 tf.function 中

import tensorflow as tf


class MyModel(tf.keras.Model):

    def call(self, inputs):
        return tf.ones([1, 1]) * inputs


model = MyModel()
model2 = MyModel()


@tf.function
def train_step(data):
    output = model(data)
    output = model2(output)
    return output


dataset = tf.data.Dataset.from_tensors(tf.ones([1, 1]))

for data in dataset:
    train_step(data)
Run Code Online (Sandbox Code Playgroud)

tf.function 中的数据集

import tensorflow as tf


class MyModel(tf.keras.Model):

    def call(self, inputs):
        return tf.ones([1, 1]) * inputs


model = MyModel()
model2 = MyModel()


@tf.function
def train():
    dataset = tf.data.Dataset.from_tensors(tf.ones([1, 1]))
    def train_step(data):
        output = model(data) …
Run Code Online (Sandbox Code Playgroud)

python tensorflow tensorflow2.0

4
推荐指数
1
解决办法
352
查看次数

标签 统计

python ×3

tensorflow ×3

tensorflow2.0 ×2

multi-gpu ×1