tf.batch_scatter_update
Обобщение tf.compat.v1.scatter_update на ось, отличную от 0. (устаревший)
tf.batch_scatter_update(
ref, indices, updates, use_locking=True, name=None
)
Аналогично batch_gather. Предполагается, что ref, indices и updates имеют серию ведущих измерений, которые одинаковы для всех, и обновления выполняются на последнем измерении индексов. Другими словами, измерения должны быть следующими:
num_prefix_dims = indices.ndims - 1 batch_dim = num_prefix_dims + 1 updates.shape = indices.shape + var.shape[batch_dim:]
где
updates.shape[:num_prefix_dims] == indices.shape[:num_prefix_dims] == var.shape[:num_prefix_dims]
И выполняемая операция может быть выражена как:
var[i_1, ..., i_n, indices[i_1, ..., i_n, j]] = updates[i_1, ..., i_n, j]
Когда indices — это одномерный тензор, эта операция эквивалентна tf.compat.v1.scatter_update.
Чтобы избежать этой операции, есть 2 варианта:
1) Изменение формы переменной путём объединения первых ndims измерений. Однако это невозможно, так как tf.reshape возвращает тензор, на котором мы не можем использовать tf.compat.v1.scatter_update. 2) Проход по первым ndims измерений переменной и использование tf.compat.v1.scatter_update для подтензоров, полученных в результате среза первого измерения. Этот вариант подходит для ndims = 1, но менее эффективен, чем данная реализация.
См. также tf.compat.v1.scatter_update и tf.compat.v1.scatter_nd_update.
| Аргументы | |
|---|---|
ref | Переменная, на которую будут разбросаны значения. |
indices | Тензор, содержащий индексы, как описано выше. |
updates | Тензор обновлений, которые нужно применить к ref. |
use_locking | Булево значение, указывающее, нужно ли блокировать операцию записи. |
name | Необязательная строка имени области. |
| Возвращает | |
|---|---|
Ссылка на variable после её изменения. |
| Возможные исключения | |
|---|---|
ValueError | Если начальные ndims измерений ref, indices, и updates не совпадают. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/batch_scatter_update