자연어처리(NLP)/IR(Information Retrieval)
[Faiss] cpu_index.add() ValueError: too many values to unpack
Hyen4110
2022. 8. 19. 11:01
[Error]
Traceback (most recent call last):
File "Handler.py", line 39, in <module>
_service.indexing(model_path)
File "Handler.py", line 22, in indexing
self.cpu_index.add(emb)
File "/home/lib/python3.6/site-packages/faiss/__init__.py", line 103, in replacement_add
n, d = x.shape
ValueError: too many values to unpack (expected 2)
이 Error log는 index.add의 input의 shape이
2차원이어야 하는데 3차원 이상이어서 발생한다!
실제로 찍어보니 -> (9, 1, 128)
차원수를 줄여서 2차원으로 만들기위해 squeeze()로 해결!
<torch의 tensor squeeze>
import torch
x = torch.rand(4, 1, 128)
x = x.squeeze() #[4, 128]
<numpy의 array squeeze>
import numpy as np
x = np.array([[[0], [1], [2]], [[0], [1], [2]]])
print(x.shape) # (2, 3, 1)
x = np.squeeze(x)
print(x.shape) # (2, 3)