Как сделать матричный скалярный продукт между двумя DataFrame в графическом процессоре с помощью rapids.ai

Я использую CUDF, это часть пакета rapids ML от Nvidia.

Используя этот пакет, как мне сделать скалярный продукт между двумя DataFrame?

a = cudf.DataFrame([[0.1, 0.2, 0.3, 0.4], [0.1, 0.2, 0.3, 0.4]])
b = cudf.DataFrame([[0.1, 0.2], [0.1, 0.2]])
a.T.dot(b) # It doesn't work, cudf doesn't supprot .dot

например как мне выполнить скалярное произведение на вышеуказанных фреймах данных?


person MrJasonLi    schedule 30.03.2020    source источник


Ответы (1)


cuDF напрямую не поддерживает эту операцию для Series или DataFrame, но вы можете преобразовать с нулевым копированием в массивы CuPy, используя нотацию .values, выполнить эту операцию и преобразовать результат обратно в DataFrame с помощью from_gpu_matrix.

import cudf

a = cudf.DataFrame([[0.1, 0.2, 0.3, 0.4], [0.1, 0.2, 0.3, 0.4]])
b = cudf.DataFrame([[0.1, 0.2], [0.1, 0.2]])
res = cudf.DataFrame.from_gpu_matrix(
    a.values.T.dot(b.values)
)

print(res)
    0   1
0   0.02    0.04
1   0.04    0.08
2   0.06    0.12
3   0.08    0.16
person Nick Becker    schedule 30.03.2020