Код: Выделить всё
Recall = TP / (TP + FN)< /code>
< /p>
, где я рассматриваю изображение как истинное положительное (TP), если оно появляется в результатах поиска топ-10, и как ложный отрицательный (Fn), если это не так. Я бы признателен за некоторую помощь. Таким образом, если я загружаю свой набор данных (давайте возьмем Cifar-10 в качестве примера) в нелупинном порядке и индекс последовательно, n-й индекс в FAIS должен соответствовать NTH Index в моем наборе данных. < /P>
Однако, когда я вычисляю напоминание, используя этот подход, значения являются странными. Я также использую параметр SELECT, как было предложено в этом ответе на переполнение стека, но я все еще сталкиваюсь с проблемами. следует: < /p>
import faiss
index = faiss.IndexHNSWFlat(1280, 100, faiss.METRIC_L2)
index.hnsw.efSearch = 2000
index.hnsw.efConstruction = 800
for data in tqdm(dataloader, desc="SYSTEM : Indexing Embeddings FAISS", unit="batch", leave=False): index.add(data.embedding)
< /code>
И ниже приведен код извлечения < /p>
Если имя файла запроса существует в результате TOP-10, то TP+= 1 else fn+= 1 < /p>
TP, FN = 0, 0
for data in tqdm(dataloader, unit="batch", leave=False):
D, I = index.search(data.embedding, 10)
filenames = [dataset[I(idx)].filename for idx in range(10)]
if data.filename in filenames:
TP += 1
else:
FN += 1
recall = TP / (TP + FN)
print(f"Recall= {round(recall, 3)}, TP = {TP}, FN = {FN}")
< /code>
и в настоящее время, shuffle dataLoader установлен на false. < /p>
dataloader = DataLoader(dataset, batch_size=1, shuffle=False)
Кроме того, набор данных правильно настроен. и набор данных может быть < /p>
Код: Выделить всё
dataset = torchvision.datasets.CIFAR10
Но я понял, что remark = 0 с tp = 0.
Я просмотрел свой код и тщательно изучил выход с функцией печати. Имя файла, извлеченное из DataLoader, правильно сохранено в переменной имени файла, а имена файлов в списке файлов действительно являются правильными, найденными Faiss.
Код: Выделить всё
seed = 111111
torch.manual_seed(seed)
np.random.seed(seed)
random.seed(seed)
Подробнее здесь: https://stackoverflow.com/questions/794 ... dont-match