Я пытаюсь уменьшить размеры двух разреженных тензоров, умножить их (нужно вещание), а затем снова уменьшить_сум. По крайней мере, одна из разреженных матриц действительно разрежена даже после сокращения, и я не могу выполнить ошибки памяти графического процессора.
Есть ли причина, по которой tf.sparse_reduce_sum не может создать разреженный тензор с градиентами? Может ли он быть эффективно создан?
минимальный код:
import tensorflow as tf
from tensorflow.python.ops import math_ops
# outputs sparse dim = batch_dim, dim1, dim2, dim3, dim4
outputs = tf.sparse.reduce_sum(outputs, axis=-1)
# gates sparse dim = batch, dim1, dim2
gates = tf.sparse.reduce_sum(gates, axis=-1)
gates = math_ops.sigmoid(out)
gates = expand_dims(gates, -1)
gates = tf.tile(gates, [1, 1, 1, tf.shape(outputs)[-1]
outputs = math_ops.multiply(gates, outputs)
outputs = math_ops.reduce_sum(outputs, [-2])