Задача состоит в том, чтобы произвести умножение вектора размера (87236 x 1) на нижнюю три angular матрицу единиц размера (87236 x 87236).
Поскольку нижняя триада angular очень большой по размеру, не могу инициализировать его для начала.
Я наткнулся на tf.linalg.LinearOperationLowerTri angular () оператор, он игнорирует верхний tri angular часть матрицы. Вот то, что я пробовал, и результат:
tril = tf.ones((4, 21809 , 21809))
lmt = tf.linalg.LinearOperatorLowerTriangular(tril)
x = tf.random.normal((87236, 1))
x = tf.reshape(x , (4, 21809,1))
lmt.matmul(x)
После полученной ошибки:
tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM
when allocating tensor with shape[4,21809,21809] and type float on
/job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
[Op:MatrixBandPart]
Могу я предложить, как я могу эффективно выполнить эту задачу? Я предполагаю, что выполнение его партиями - это решение, однако как инициализировать нижнюю матрицу tri angular партиями?