Сохраните многодисковый тензор на диске и считайте со смещения

#python #pytorch #tensor

Вопрос:

У меня есть многомерный тензор, подобный этому

 tensor([[ 0.5599,  0.4593,  0.0580,  ..., -0.2404,  0.1144, -0.5047],
        [ 0.1545,  0.3332,  0.3836,  ...,  0.2483, -0.0849, -0.2216],
        [ 0.4513,  0.0115,  0.0801,  ..., -0.8038,  0.2350, -0.3261],
        ...,
        [-0.4387,  0.3028, -0.0510,  ..., -0.4966, -0.1606,  0.2933],
        [ 0.0312,  0.2351, -0.0397,  ..., -0.5401, -0.0554, -0.1552],
        [-0.3732, -0.0460,  0.0698,  ..., -0.2963, -0.3514, -0.3815]],
       device='cuda:0', requires_grad=True)
Size of entity embeddings:  torch.Size([14951, 400])
 

Каков наилучший способ сохранить этот тензор на диске и проиндексировать только строку этого многомерного тензора (т. Е., скажем, последнюю строку [-0.3732, -0.0460, 0.0698, ..., -0.2963, -0.3514, -0.3815] и перенести ее в память на python?

Ответ №1:

Ответ зависит от того, что вы пытаетесь максимизировать/минимизировать.

Вы можете определить «Лучший способ хранения» как самую быструю запись, самое быстрое чтение, самый маленький файл, …

Но, учитывая ваши ограничения, я думаю, что HDFS должна быть хорошим кандидатом.

Pandas позволяет сохранять файлы в формате HDFS с помощью функции df.to_hdf ().

Вы также можете посмотреть H5py для работы с файлами HDFS.