Невозможно разделить градиентную ленту в Tensorflow 2 между двумя компьютерами - PullRequest
0 голосов
/ 07 февраля 2020

TensorFlow версия 2.0.0

Я обучаю 2 каскадных модели, model1 и model2, на Tensorflow 2.0.0, которые будут использоваться на 2 разных компьютерах. В настоящее время я имитирую его на одном компьютере. Если я тренирую модели на одной градиентной ленте, она тренируется отлично, вычисляя градиенты следующим образом:

    import tensorflow as tf
    loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

    with tf.GradientTape(persistent=True) as tape:
        features = model1(x_batch_train)
        logits = model2(features)
        loss_value = loss_fn(y_batch_train, logits)

    # Computing gradients for model 2
    grads2 = tape.gradient(loss_value, model2.trainable_variables)
    # Computing gradients to pass to model 1
    grads_pass = tape.gradient(loss_value, features)
    # Computing gradients for model 1
    grads1 = tape.gradient(features, model1.trainable_variables, output_gradients=grads_pass)

Однако, если я хочу разделить обучение на 2 разных компьютера, я должен иметь градиентную ленту в каждый из них, но затем вычисленные результаты различны!

    import tensorflow as tf
    loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

    with tf.GradientTape() as tape1:
        features = model1(x_batch_train)

    with tf.GradientTape(persistent=True) as tape2:
        logits = model2(features)
        loss_value = loss_fn(y_batch_train, logits)

    # Computing gradients for model 2
    grads2 = tape2.gradient(loss_value, model2.trainable_variables)
    # Computing gradients to pass to model 1
    grads_pass = tape2.gradient(loss_value, features)
    # Computing gradients for model 1
    grads1 = tape1.gradient(features, model1.trainable_variables, output_gradients=grads_pass)

Операции, записанные на лентах, независимы, так почему это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...