Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
milvus
提交
2b035e54
milvus
项目概览
BaiXuePrincess
/
milvus
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2b035e54
编写于
4月 21, 2019
作者:
G
groot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
index search unittest
Former-commit-id: 9632c0668ce71d07bba6f13e9ee46df4e1af6b38
上级
885b95e2
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
54 addition
and
18 deletion
+54
-18
cpp/unittest/faiss_wrapper/wrapper_test.cpp
cpp/unittest/faiss_wrapper/wrapper_test.cpp
+54
-18
未找到文件。
cpp/unittest/faiss_wrapper/wrapper_test.cpp
浏览文件 @
2b035e54
...
...
@@ -23,36 +23,72 @@ TEST(operand_test, Wrapper_Test) {
TEST
(
build_test
,
Wrapper_Test
)
{
// dimension of the vectors to index
int
d
=
64
;
// size of the database we plan to index
size_t
nb
=
100000
;
int
d
=
3
;
// make a set of nt training vectors in the unit cube
size_t
nt
=
1
5
0000
;
size_t
nt
=
10000
;
// a reasonable number of cetroids to index nb vectors
int
ncentroids
=
25
;
srand48
(
35
);
// seed
int
ncentroids
=
16
;
std
::
vector
<
float
>
xb
(
nb
*
d
);
for
(
size_t
i
=
0
;
i
<
nb
*
d
;
i
++
)
{
xb
[
i
]
=
drand48
();
}
std
::
random_device
rd
;
std
::
mt19937
gen
(
rd
());
std
::
vector
<
long
>
ids
(
nb
);
for
(
size_t
i
=
0
;
i
<
nb
;
i
++
)
{
ids
[
i
]
=
drand48
();
}
std
::
vector
<
float
>
xb
;
std
::
vector
<
long
>
ids
;
//prepare train data
std
::
uniform_real_distribution
<>
dis_xt
(
-
1.0
,
1.0
);
std
::
vector
<
float
>
xt
(
nt
*
d
);
for
(
size_t
i
=
0
;
i
<
nt
*
d
;
i
++
)
{
xt
[
i
]
=
d
rand48
(
);
xt
[
i
]
=
d
is_xt
(
gen
);
}
//train the index
auto
opd
=
std
::
make_shared
<
Operand
>
();
opd
->
index_type
=
"IVF16,Flat"
;
opd
->
d
=
d
;
opd
->
ncent
=
ncentroids
;
IndexBuilderPtr
index_builder_1
=
GetIndexBuilder
(
opd
);
auto
index_1
=
index_builder_1
->
build_all
(
nb
,
xb
,
ids
,
nt
,
xt
);
auto
index_1
=
index_builder_1
->
build_all
(
0
,
xb
,
ids
,
nt
,
xt
);
ASSERT_TRUE
(
index_1
!=
nullptr
);
// size of the database we plan to index
size_t
nb
=
100000
;
//prepare raw data
xb
.
resize
(
nb
);
ids
.
resize
(
nb
);
for
(
size_t
i
=
0
;
i
<
nb
;
i
++
)
{
xb
[
i
]
=
dis_xt
(
gen
);
ids
[
i
]
=
i
;
}
index_1
->
add_with_ids
(
nb
,
xb
.
data
(),
ids
.
data
());
//search in first quadrant
int
nq
=
1
,
k
=
10
;
std
::
vector
<
float
>
xq
=
{
0.5
,
0.5
,
0.5
};
float
*
result_dists
=
new
float
[
k
];
long
*
result_ids
=
new
long
[
k
];
index_1
->
search
(
nq
,
xq
.
data
(),
k
,
result_dists
,
result_ids
);
for
(
int
i
=
0
;
i
<
k
;
i
++
)
{
if
(
result_ids
[
i
]
<
0
)
{
ASSERT_TRUE
(
false
);
break
;
}
long
id
=
result_ids
[
i
];
std
::
cout
<<
"No."
<<
id
<<
" ["
<<
xb
[
id
*
3
]
<<
", "
<<
xb
[
id
*
3
+
1
]
<<
", "
<<
xb
[
id
*
3
+
2
]
<<
"] distance = "
<<
result_dists
[
i
]
<<
std
::
endl
;
//makesure result vector is in first quadrant
ASSERT_TRUE
(
xb
[
id
*
3
]
>
0.0
);
ASSERT_TRUE
(
xb
[
id
*
3
+
1
]
>
0.0
);
ASSERT_TRUE
(
xb
[
id
*
3
+
2
]
>
0.0
);
}
delete
[]
result_dists
;
delete
[]
result_ids
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录