LargeVis Python3编译安装

可视化的工具使用了TSNE发现在MNIST 784维的时候效果不太好,各大网站技术博客搜了下看到LargeVis很多人用。官方的代码是基于Python2编写的,所以发一个改Python3的方法和效果。

 


 

1. 代码下载

LargeVis下载(https://github.com/lferry007/LargeVis)

Linux依赖GSL(https://www.gnu.org/software/gsl/)

windows依赖BOOST(https://www.boost.org/)

 

2. Linux安装依赖和修改

2.1 安装GSL

解压编译安装下载的GSL压缩包

tar -zxvf gsl-2.5.tar.gz
cd ./gsl-2.5
sudo ./configure
sudo make
sudo make install

修改/etc/profile

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

 

2.2 安装LargeVis

解压下载的LargeVis压缩包

unzip LargeVis-master.zip
cd LargeVis-master/Linux/

修改setup.py文件,配置其中GSL路径

include_dirs = ['/usr/local/include/gsl'],

修改LargeVismodule.cpp文件

将97行

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

修改为

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

将127-131行

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);
};

安装LargeVis

sudo g++ LargeVis.cpp main.cpp -o LargeVis -lm -pthread -lgsl -lgslcblas -Ofast -march=native -ffast-math
sudo python setup.py install

 

3. windwos安装依赖和修改

3.1 安装BOOST

解压编译安装下载的BOOST压缩包

unzip boost_1_70_0_rc2.zip
cd ./boost_1_70_0
bootstrap.bat

生成了bjam.exe与b2.exe

bjam.exe stage --toolset=msvc-14.0 link=static address-model=64 runtime-link=shared threading=multi debug release

 

3.2 安装LargeVis

解压下载的LargeVis压缩包

unzip LargeVis-master.zip
cd LargeVis-master/Windows/

修改setup.py文件,配置其中BOOST路径

include_dirs = ['D:\\d\\boost\\boost_1_70_0'],
library_dirs = ['D:\\d\\boost\\boost_1_70_0\\stage\\lib'],

修改LargeVismodule.cpp文件

将97行

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

修改为

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

将127-131行

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);
};

安装LargeVis

python setup.py install

 

4. 效果验证

默认附带例子

cd LargeVis/Examples/MNIST
sh ./run_mnist.sh
LargeVis
先PCA后TSNE

 

5. NOTEBOOK

看了python入参自己的代码介绍。

 

 


版权声明:本文为channelyoung原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。