Windows 7旗舰版下 LargeVis的安装与使用

 

目录

一、Windows安装LargeVis

1.安装Microsoft Visual Studio

1.1查看需要安装的版本    

1.2下载Visual Studio

1.3开始安装

1.4 配置环境变量

2.Boost配置

2.1下载Boost

2.2编译

2.3 在VS2017中配置

3.安装LargeVis

3.1 下载相关文件

3.2 一些修改

3.3 安装Python wrapper:生成LargeVis-Python模块

3.4 运行例子

二、LargeVis的使用

1.LargeVis输入格式

1.1高维特征向量

1.2 网络

2.LargeVis运行

2.1 C++

2.2 Python

2.3 参数

2.4 示例


配置环境:Windows7旗舰版64位,Anaconda3(Python3.6)、Microsoft Visual Studio2017

一、Windows安装LargeVis

1.安装Microsoft Visual Studio

1.1查看需要安装的版本    

       我安装的是Anaconda,因此打开Anaconda Prompt,输入python,可以看到当前python版本是:python3.6.5;当前需要的Vs编译器的版本是:MSC v. 1900。

 

       查看下面的表格,对应版本的Visual C ++使用的编译器版本如下:(表的参考网站:https://stackoverflow.com/questions/2676763/what-version-of-visual-studio-is-python-on-my-computer-compiled-with

Visual C ++版本

编译器版本

Visual C++ 4.x

MSC_VER=1000

Visual C++ 5

MSC_VER=1100

Visual C++ 6

MSC_VER=1200

Visual C++ .NET

MSC_VER=1300

Visual C++ .NET 2003

MSC_VER=1310

Visual C++ 2005 (8.0)

MSC_VER=1400

Visual C++ 2008 (9.0)

MSC_VER=1500

Visual C++ 2010 (10.0)

MSC_VER=1600

Visual C++ 2012 (11.0)

MSC_VER=1700

Visual C++ 2013 (12.0)

MSC_VER=1800

Visual C++ 2015 (14.0)

MSC_VER=1900

Visual C++ 2017 (15.0)

MSC_VER=1910

       推荐安装VisualStudio2015或者更高版本,高版本的Visual Studio无论是在编译Boost,还是在安装LargeVis中都有很大的帮助,可以减少很多的麻烦。

1.2下载Visual Studio

https://docs.microsoft.com/en-us/visualstudio/productinfo/vs2017-system-requirements-vs下载Visual Studio 2017的社区版,安装时只选择使用C++的桌面开发即可。(这个少装了其他模块也不用担心,安装完成后可以随时打开Visual Studio Installer修改与添加的。)

 

 

1.3开始安装

(1)

(2)修改路径

(3)只选择安装C++桌面开发

(4)安装中

(4)安装完成后需要重启电脑。

1.4 配置环境变量

 

 

       打开cmd,输入cl,若如下图所示,则没有配置好环境变量。如果显示的是下面那张图片就不用管了。

       打开控制面板,高级系统设置——环境变量——在系统环境变量中找到path编辑,添加cl的路径。电脑中有两个VC版本,Hostx64、Hostx86,我是64位,配置的是前者。路径D:\Visual Studio 2017\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64。

       配置完成后,在命令行中输入cl,如下图所示,即环境配置成功。

 

2.Boost配置

       在使用LargeVis之前,如果是windows平台,要保证电脑上有Boost。

 

 

2.1下载Boost

进入官网https://dl.bintray.com/boostorg/release/1.69.0/source/,下载boost_1_69_0.zip

2.2编译

(1)下载完成后,解压压缩包boost_1_69_0.zip到本地磁盘,打开VS 2017 Developer Command Prompt,切换到boost目录,执行bootstrap.bat脚本。

(2)出现dos对话框,程序正在构建一些配置和生成文件。

(3)运行完后会多出三个文件,即b2.exe、bjam.exe和project-config.jam。

(4)继续输入b2.exe。

运行结束后显示如下:

       在boost根目录下生成bin.v2和stage两个文件夹,其中bin.v2下是生成的中间文件,大小在2.7G左右,可以直接删除。编译完成后所有的静态lib文件存放在stage\lib目录下。

 

 

2.3 在VS2017中配置

(1)新建一个windows控制台程序,命名为boosttest,其它默认确定。

(2)输入代码:

#include <boost/math/constants/constants.hpp>
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <iostream>
#include <iomanip>

using namespace std;
using namespace boost::math::constants;
using namespace boost::multiprecision;

int main()
{
	cout << "圆周率是:" << setprecision(50) << pi<cpp_dec_float_50>() << endl;
	cout << "自然对数e是:" << setprecision(50) << e<cpp_dec_float_50>() << endl;
	cout << "根号2是:" << setprecision(50) << root_two<cpp_dec_float_50>() << endl;
	return 0;
}
// 圆周率π是:3.1415926535897932384626433832795028841971693993751
// 自然对数e是:2.7182818284590452353602874713526624977572470937
// 根号2是:1.4142135623730950488016887242096980785696718753769

下面图中的程序和上面这个不一样,懒得改了,输入上面这个程序就行。

 

(3)打开项目属性页,然后切换到VC++目录,在包含目录和库目录中分别添加D:\Boost\boost_1_69_0和D:\Boost\boost_1_69_0\stage\lib两个路径。

       打开链接器配置,在附加库目录中添加对应的路径D:\Boost\boost_1_69_0\stage\lib。

(6)运行测试

       ctrl+F5,无问题,即代表成功。

我运行上面这个程序的时候出现了gcc.exe failed with exit status 1的错误,解决办法参考:https://blog.csdn.net/c654528593/article/details/81410295,修改后重新运行一下就好了。

 

Boost安装参考:http://blog.csdn.net/f_r_e_e_x/article/details/38849505

参考:https://blog.csdn.net/u011054333/article/details/78648294

参考:https://msd.misuland.com/pd/2884250137616453476

 

3.安装LargeVis

3.1 下载相关文件

       在网站https://github.com/lferry007/LargeVis下载LargeVis项目的相关文件,总共21M,下载完成后解压。

 

解压后的文件如图所示:

3.2 一些修改

      由于这个项目中是基于Python2.7的,我的电脑上Python(Anaconda)安装的是3.6,导致有些API早已不是原先的名字了,我们需要对某些地方进行一些修改,具体如下:

打开LargeVismodule.cpp:

 

 

(1)

real x = atof(PyString_AsString(PyObject_Str(PyList_GetItem(vec, j))));

修改为

real x = atof(PyBytes_AsString(PyObject_Str(PyList_GetItem(vec, j))));

(2)

PyMODINIT_FUNC initLargeVis()

{

       printf("LargeVis successfully imported!\n");

       Py_InitModule("LargeVis", PyExtMethods);

}

修改为

static struct PyModuleDef LargeVismodule =

{

PyModuleDef_HEAD_INIT,

"LargeVis",

NULL,

-1,

PyExtMethods

};



PyMODINIT_FUNC

PyInit_LargeVis(void)

{

       return PyModule_Create(&LargeVismodule);

}

 

 

3.3 安装Python wrapper:生成LargeVis-Python模块

(1) 修改Boost路径

       打开Windows文件夹下的setup.py文件,更新其中的boost根目录和库目录路径:

LargeVis = Extension('LargeVis',

                    sources = ['LargeVis.cpp', 'LargeVismodule.cpp', 'ANNOY\\mman.cpp'],

                    depends=['LargeVis.h'],

                    include_dirs = ['D:\\Boost\\boost_1_69_0'],

                    library_dirs = ['D:\\Boost\\boost_1_69_0\\stage\\lib'],

                    extra_compile_args=['/Ox'])

(2)安装

       路径设置完毕之后,打开cmd命令行终端,切换到setup.py当前目录,输入:python setup.py install。

LargeVis便可以安装到python的库中。

 

 

3.4 运行例子

(1)将文件LargeVis_run.py、mnist_vec784D.txt、mnist_label.txt放在同一文件夹下。

(2)运行cmd,将当前目录切换至LargeVis_run.py所在位置,输入命令:

python LargeVis_run.py -input mnist_vec784D.txt -output mnist_vec2D.txt

(2)运行结束后会在当前文件夹内生成mnist_vec2D.txt文件,

       继续输入命令:

python plot.py -input mnist_vec2D.txt -label mnist_label.txt -output mnist_plot

(3)在当前文件夹内会生成名为mnist_vec2D_plot的特征图。

我每次运行这个例子最后生成的图都不一样,暂时还不知道为什么。

二、LargeVis的使用

1.LargeVis输入格式

LargeVis适用于可视化高维特征向量和网络。

1.1高维特征向量

对于高维特征向量,输入文件的格式如下所示:第一行指定特征向量的数量和维度(以下示例中的500个向量具有10个维度),接下来的500行中的每一行描述一个具有10个浮点数的特征向量。

 

 

 

 

1.2 网络

       对于网络,输入文件的每一行都是DIRECTED边缘。对于每个无向边,用户必须使用两个DIRECTED边来表示它。例如,

 

2.LargeVis运行

2.1 C++

       需要用到LargeVis.cpp文件:

 

格式:./LargeVis -input -output

 

 

2.2 Python

       需要用到LargeVis_run.py文件:

格式:python LargeVis_run.py -input -output

 

 

2.3 参数

(1)-input:输入特征向量或网络的文件(有关输入格式,请参阅示例文件夹)。

(2)-output:低维表示的输出文件。

 

       除了这两个参数,其他可选参数包括:

 

(1)-fea:指定输入文件是高维特征向量(1)还是网络(0)。默认值为1。

(2)-threads:线程数。默认值为8。

(3)-outdim:较低维度LargesVis学习可视化(通常为2或3)。默认值为2。

(4)-samples:图形布局的边缘样本数(以百万计)。默认设置为data size / 100(百万)。

(5)-prop:K-NNG构造状态下邻居传播的次数,通常小于3,默认值为3。

(6)-alpha:初始学习率。默认值为1.0。

(7)-trees:用于构造K-NNG的随机投影树的数量。对于大多数情况来说,50就足够了,除非您处理非常大的数据集(例如,数据大小超过500万),并且较少的树适合较小的数据集。默认值根据数据大小设置。

(8)-neg:用于负采样的负样本数。默认值为5。

(9)-neigh:K-NNG中的邻居数(K),通常设置为三倍的困惑。默认值为150。

(10)-gamma:分配给负边的权重。默认值为7。

(11)-perp:用于确定K-NNG中边缘权重的困惑。默认值为50。

 

 

2.4 示例

       作者提供了一些示例,包括Examples/文件夹中的MNIST(高维特征向量)和CondMat(网络)。

例如,要显示MNIST数据集,

python LargeVis_run.py -input mnist_vec784D.txt -output mnist_vec2D.txt -threads 16

python plot.py -input mnist_vec2D.txt -label mnist_label.txt -output mnist_vec2D_plotmnistçæè

主要参考:https://github.com/lferry007/LargeVis

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值