본문 바로가기
자연어처리(NLP)/IR(Information Retrieval)

[Faiss] cpu_index.add() ValueError: too many values to unpack

by Hyen4110 2022. 8. 19.

[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.addinput의 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)

 

 

댓글