资讯详情

资讯详情

pylearn2 安装包怎么装?基于 Theano 0.8.2 的 Python 2.7 环境搭建全记录

简介Pylearn2是基于Python的深度学习框架由蒙特利尔大学MILA实验室开发面向希望深入理解卷积神经网络、受限玻尔兹曼机等经典模型的研究者与初学者。该安装包为master源码版本压缩包共750个文件、约2.16MB文件构成以Python源码522个py、YAML配置70个yaml、纯文本说明51个txt为主另含CUDA内核文件、Jupyter notebook示例及多个命令行辅助脚本如pylearn2-train、pylearn2-show-weights整体层次清晰、便于按需查阅。包内附有conv.conf、mlp.conf等经典模型配置以及Sphinx文档源和样式文件可支撑本地文档二次构建。解压后进入目录执行python setup.py install即可完成安装适合在Anaconda管理环境中与Theano、NumPy、SciPy等依赖配合使用。目前已有269人学习下载对希望复现早期深度学习实验、梳理Pylearn2源码结构和训练流程的读者而言是一份能够快速上手的实用资源。 如果你还能搜到“pylearn2安装包”这几个字说明你不是来怀旧的而是被某个老课程、某段论文复现代码或者一台老爷级别的服务器逼到了墙角。pylearn2 是 LISA 实验室开源的深度学习框架底层构建在 Theano 之上2015 年前后很多机器学习课程用它跑卷积网络、自编码器和受限玻尔兹曼机。如今官方文档下线、网上各种下载链接纷纷失效所谓“pylearn2 安装包”大多是特定环境下的产物直接拿来基本装不上。这篇就把我从零装一个可用 pylearn2 环境的完整过程记录下来包括版本取舍、环境准备、具体命令、报错绕过看完能少走很多弯路。1. pylearn2是什么为什么它的安装包这么难找1.1 一段被深度学习框架迭代抛下的历史pylearn2 出身于 LISA 实验室名字里的“pylearn”就是“Python learn”的意思。它和同时代的 Caffe、Torch7 一样在深度学习爆发早期承担了很多论文复现任务。它的设计方式很特别模型结构、训练参数都写在 YAML 配置里跑实验时通过命令行工具加载这些配置而不是像现在这样用 Python 脚本动态构建网络。问题出在它停止维护得太早。Theano 在 2017 年宣布停止开发pylearn2 比 Theano 更早进入半死状态GitHub 上的 master 分支就成了事实上的最终版本。官方没有发布过规范的 release 压缩包也没有提供面向现代系统的预编译 wheel以前能用的官方示例和安装指引大多散落在失效的 wiki 页面里。所以现在搜“pylearn2 安装包”能捞出来的大多是热心网友整理的老压缩包出处不明、环境不匹配下载下来反而更折腾。1.2 现在还在装 pylearn2 的人一般是什么场景我总结下来主要有三类人。第一类是被老课程作业困住的学生课件和代码模板都是 2015 年前后写的不装 pylearn2 就跑不了实验。第二类是复现老论文的研究者尤其是做无监督学习、稀疏编码、RBM 这类的文章代码仓库直接指向 pylearn2。第三类是在维护旧服务器的人某些内部工具链还是 Theano pylearn2 的组合不能轻易重构迁移只能在一个隔离环境里把它重新咬合起来。这篇文章的核心就是给这三类人一个可以直接照着操作的方案。重点不是把 pylearn2 讲得多深而是让你在一台干净的机器上从空环境开始真正把“import pylearn2”跑通。2. 安装pylearn2之前先搞清这3个关键环境问题2.1 Python版本老老实实用Python 2.7pylearn2 的源码是纯粹的 Python 2 写法print 还是语句而不是函数Python 3 环境下就连解析语法都会直接抛 SyntaxError。所以不要心存侥幸第一件事就是准备好一个 Python 2.7 的隔离环境。为什么强调“隔离”因为现在很多机器的系统 Python 是 3.8 甚至更高直接修改系统环境很容易把系统工具链弄坏。我推荐用 conda 来创建环境理由有三个conda 能精确指定 Python 2.7它能同时帮我们解析出与该 Python 版本匹配的 numpy、scipy环境目录独立删掉也方便不影响机器其他项目。有同学可能会问Python 2.7 不是早就停止维护了吗是的但 conda 社区仍然把这套老 Python 的包管理得很好在 conda-forge 频道里能找到完整可用的 Python 2.7 环境。第一次创建时如果提示找不到包加上-c conda-forge再试一次基本就解决了。2.2 Theano版本别用新版选0.8.2pylearn2 是 Theano 的上层封装两者耦合非常深。Theano 后续版本做过大量接口调整而且它自己也已经停止维护所以新版 Theano 和 pylearn2 之间会出现各种接口不匹配。我在测试时先用默认的 Theano 1.0.x 尝试跑通结果报了一堆类似AttributeError和配置项不存在的问题后来切回 Theano 0.8.2同样一段代码就稳定运行。可以这么理解pylearn2 和 Theano 0.8.2 是“同一个时代”的产物而 Theano 1.0.x 已经改了太多底层的默认行为。所以无论你在哪个操作系统上装Theano 版本都建议钉死在 0.8.2不要手滑升级。2.3 操作系统选型Windows下最好绕道从安装难度来说Linux 最省事Ubuntu 20.04 这类环境里基本一次通过。macOS 也不是不行但较新版本的 macOS 对 Python 2.7 兼容性已经很差编译扩展模块时经常碰到各种乱七八糟的链接错误如果你不是非要在 Mac 上跑建议直接放弃。Windows 更麻烦Theano 0.8.2 在 Windows 上编译 C 代码依赖完整的 C 工具链装起来非常容易卡住。如果你手里只有 Windows 机器我的建议是装一个 WSL 或者虚拟机在 Ubuntu 环境里完成安装。这套方案我实测下来最稳也能避免各种文件路径和编译器问题。3. pylearn2安装实操从空环境到import成功3.1 第一步用conda创建Python 2.7隔离环境打开终端执行两行基础命令conda create -n pylearn2 python2.7 -y conda activate pylearn2-n pylearn2是给环境取名字你可以换成一个你容易记的名字-y是跳过确认提示省得再敲一次 y。激活成功后终端前缀会变成(pylearn2)这意味着你当前所有命令都发生在这个虚拟环境里尽量保证整个安装过程都在这个前缀下操作。如果你的 conda 版本比较新创建时可能会提示PackagesNotFoundError: python2.7。不用慌在命令末尾加上-c conda-forge也就是conda create -n pylearn2 python2.7 -c conda-forge -yconda-forge 是老软件包聚合得比较全的社区频道Python 2.7 这种老版本基本都能找到。3.2 第二步安装numpy、scipy、PyYAML等基础依赖创建完环境后先不要急着装 pylearn2pylearn2 依赖的基础库如果版本不对后面做什么都白搭。直接把最核心的几个依赖通过 conda 装好conda install numpy scipy pyyaml matplotlib -y这一步里 conda 会自动帮你选到和 Python 2.7 匹配的旧版本 numpy大体是 1.16.x 系列、scipy 和 PyYAML。千万不要手动用pip install numpy去强装新版新版本的 numpy 已经完全不支持 Python 2.7就算装进去也无法导入。matplotlib 不是 pylearn2 强制依赖但它的官方示例脚本里有不少画图操作顺手装上能省去后面补依赖的麻烦。3.3 第三步安装Theano 0.8.2并做好基础配置基础依赖就绪后安装指定版本的 Theanopip install theano0.8.2如果 pip 在当前渠道找不到这个版本可以改用 Git 方式安装对应标签pip install githttps://github.com/Theano/Theano.gitrel-0.8.2接下来需要配置 Theano 的运行参数。pylearn2 在早期默认使用 32 位浮点数而部分 new 版本 Theano 默认可能是float64两者的训练结果和代码习惯会不一样。建议新建一个 Theano 配置文件让默认环境更贴近老代码的运行习惯mkdir -p ~/.theano cat ~/.theanorc EOF [global] floatX float32 device cpu EOF这里我特别把device设置成了cpu。新手刚开始不要尝试配置device cuda因为 pylearn2 年代和现行 CUDA 版本的适配非常复杂没有匹配的编译环境时Theano 会在第一次运行时报出特别吓人的编译失败直接会让整个安装过程卡住。先在 CPU 上跑通逻辑等哪天真需要 GPU 了再去折腾也不迟。3.4 第四步获取pylearn2源码并安装pylearn2 没有官方编译好的 wheel 安装包最可靠的“安装包”就是 GitHub 上的源码包。推荐用 git 拉取git clone https://github.com/lisa-lab/pylearn2.git cd pylearn2 python setup.py develop如果确实不方便使用 git也可以打开 GitHub 仓库页面点击 Code 按钮选择 Download ZIP把 master 分支的压缩包下载到本地解压进入解压目录后同样执行python setup.py develop。我为什么推荐develop而不是install因为develop是开发模式python 会把当前目录链接到 site-packages 里后续你从 GitHub 更新代码不需要重新安装就能生效。当然它要求当前环境有 setuptoolsconda 的 Python 2.7 环境里默认是带了的。如果develop命令报错退而求其次执行python setup.py install也能完成安装。3.5 第五步验证安装是否真的成功安装完不能光看提示直接跑一条命令确认模块能正常导入python -c import pylearn2; print(pylearn2.__file__)如果能看到一行类似.../site-packages/pylearn2/__init__.py的路径说明 pylearn2 已经成功装进当前环境。再顺手验证一下 Theano 编译链是否正常工作python -c import theano; from theano import tensor as T; xT.scalar(x); ftheano.function([x], x*2); print(theano ok:, f(3))如果终端输出theano ok: 6.0而不是一长串错误说明 Theano 的 C 代码编译链路也是好的接下来可以正常跑 pylearn2 的实验了。4. 安装和第一次使用时最容易踩的坑4.1 报错“No module named pylearn2”这个报错最常见的两个原因第一是当前根本没激活 conda 环境你在系统 Python 下执行了 import第二是进了 pylearn2 源码目录却没有执行setup.py develop或install。我的习惯是每换一个终端都先看一眼提示符前面有没有(pylearn2)再跑python --version确认版本这样能避免大量低级错误。4.2 在Python 3环境下直接SyntaxErrorpylearn2 的源码在 Python 3 下连语法解析都过不去报错会直接指向某个.py文件的 print 语句。解决方法不是去逐行改源码而是回到 Python 2.7 环境。很多人一开始没意识到这一点还以为是自己系统缺了什么包。记住一条这个项目就是 Python 2 纪元的产物我们只能去适配它不要试图让它兼容现代 Python否则越改越乱。4.3 Theano第一次运行时报编译失败Theano 有一个特性第一次运行某些函数时会把计算图编译成 C 代码所以首次执行往往会等待较长时间也有可能直接报编译错误。常见原因有两个一是系统缺少 gcc 等编译工具Linux 下可以用sudo apt install build-essential装好再试二是配置里把 device 设成了 gpu而机器没有对应 CUDA 工具链。建议按照前面第 3.3 节的配置先把 device 设成 cpu跑通一遍再考虑更高级的环境。4.4 数据集下载一直超时或卡死pylearn2 自带的数据集脚本默认会去老服务器下载数据比如 MNIST 的 pkl 文件服务器年代久远连接超时很常见。遇到这种情况不必怀疑安装有问题而是走手动下载的路子把数据集文件放到某个本地目录再用 pylearn2 的数据集配置或 PYTHONPATH 指定这个目录。初次接触时建议先跑官方 examples 里不需要大数据的简单模型把安装链路验证清楚再碰数据集。4.5 千万别乱下载网上的一键安装包我明白搜“pylearn2 安装包”的人很多是想找个现成压缩包直接解压就能用。但从我实际经验看这条路通常更坑。Python 环境的组合实在太多别人打包时用的 numpy 版本、Theano 版本、Python 小版本和你本机稍微不一样import 阶段就会崩。与其下载来路不明的预编译包不如老老实实按上面的源码安装步骤二十分钟内一定能走通。如果你真的有离线安装需求正确做法也不是去找别人做好的包而是自己找一台能联网的机器先把整个 conda 环境建好然后用conda pack或conda env export把环境导出再到目标机器上重建。这样导出的才是真正匹配你项目的“安装包”。5. 装完之后的一点建议整套环境好不容易跑通后建议立刻把环境依赖锁定下来。在(pylearn2)环境里执行conda env export pylearn2_env.yml这个 YAML 文件会把当前环境里的 Python 版本、numpy、scipy、Theano、pylearn2 的依赖关系全部记录下来。以后换机器只需要conda env create -f pylearn2_env.yml就能重建一个几乎一模一样的环境这是对付老库最省心的备份手段。我自己的体会是和 pylearn2 死磕的这段时间虽然折腾但反而让我想通了很多深度学习框架的底层逻辑计算图怎么构建、配置文件和代码怎么分离、训练循环和模型定义怎么组织。现在新框架把这些都封装得越来越简单回头再看 Theano 时代的代码会有一种豁然开朗的感觉。如果你只是为了完成作业我建议装好后照着官方 examples 跑通一个最简单的 MLP 就收手不必在复杂的调参上耗费太多时间。毕竟这个框架已经完成了它的历史使命能用起来解决眼前的旧项目任务就已经值回票价了。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →