3、Python与深度学习环境搭建:Anaconda安装、TensorFlow/PyTorch安装、CUDA与cuDNN配置、Jupyter Notebook使用
说实话,环境搭建这件事,看着简单,但坑是真不少。我带过不少学生,第一节课就卡在装环境上,一卡就是一整天。我自己当年也踩过不少雷,所以这一章,我尽量把那些容易翻车的地方都给你指出来。
核心要点:深度学习环境搭建,说白了就是三件事——Python包管理、深度学习框架安装、GPU加速配置。这三件事搞定了,后面写代码就顺了。
3.1 Anaconda:Python的“瑞士军刀”
我个人习惯,每开始一个新项目,第一件事就是装Anaconda。为什么?因为它自带conda包管理器,能帮你隔离不同项目的Python环境。你想想看,项目A需要TensorFlow 2.x,项目B需要1.x,如果没有环境隔离,那不得打架打到头破血流?
安装步骤其实很简单:
- 去Anaconda官网下载对应系统的安装包(Windows/Linux/macOS)
- 一路默认安装,但记得勾选“Add Anaconda to my PATH environment variable”
- 安装完成后,打开终端(或Anaconda Prompt),输入
conda --version验证
我的小建议:别用最新版Anaconda。我遇到过好几次,最新版刚发布时有些包还没适配,装上去各种报错。用前一个稳定版,省心很多。
装好之后,我建议你立刻创建一个专门用于脑电信号分析的虚拟环境:
conda create -n eeg_env python=3.9
conda activate eeg_env
为什么要用Python 3.9?嗯,这里要注意。TensorFlow和PyTorch对Python版本有要求,3.9是目前兼容性最好的版本。3.10以上有些老版本的库装不上,3.8以下又太老了。3.9,刚刚好。
3.2 TensorFlow vs PyTorch:我该怎么选?
这个问题,几乎每个学生都会问我。我的回答是:做脑电信号解码,两个都要会。但如果你非要选一个先学,我建议PyTorch。
为什么?因为PyTorch的调试体验更好。你想想看,写深度学习代码,90%的时间都在debug。PyTorch的动态图机制,让你可以像写普通Python代码一样逐行调试。TensorFlow 2.x虽然也支持了动态图,但总感觉差了那么点意思。
安装命令如下:
# PyTorch(CPU版本)
pip install torch torchvision torchaudio
# TensorFlow(CPU版本)
pip install tensorflow
我曾经踩过的坑:直接 pip install torch 装的是CPU版本。如果你有NVIDIA显卡,一定要去PyTorch官网用那个自动生成的命令安装。官网会根据你的CUDA版本生成对应的安装命令,比自己瞎装靠谱多了。
3.3 CUDA与cuDNN:让GPU跑起来
做脑电信号解码,数据量动不动就是几百兆甚至几个G。用CPU跑?一个模型训练三天三夜。用GPU?几个小时搞定。所以,CUDA和cuDNN的配置,是绕不开的一关。
配置步骤我总结成了一张流程图,你照着走就行:
具体操作是这样的:
- 检查显卡:终端输入
nvidia-smi,看有没有输出。如果没有,说明你没装NVIDIA驱动,或者显卡不是NVIDIA的。 - 安装CUDA:去NVIDIA官网下载对应版本的CUDA Toolkit。注意,别装最新的,装TensorFlow/PyTorch官方文档里推荐的版本。
- 配置cuDNN:下载cuDNN后,把里面的文件复制到CUDA安装目录下。说白了就是复制粘贴,但路径别搞错了。
- 验证:运行
python -c "import torch; print(torch.cuda.is_available())",如果返回True,恭喜你,成了。
我曾经翻车的一次经历:有一次我装CUDA 11.8,但TensorFlow 2.10只支持到11.2。结果训练时一直报错,查了两天才发现是版本不匹配。所以,装之前一定先去框架官网看兼容性表格,别想当然。
3.4 Jupyter Notebook:交互式编程利器
做脑电信号分析,我90%的时间都在Jupyter Notebook里度过。为什么?因为它太适合探索性分析了。你可以一段一段地跑代码,随时看中间结果,画个图也方便。
安装很简单:
# 在虚拟环境中安装
conda install jupyter notebook
# 或者用pip
pip install jupyter notebook
启动就更简单了:
jupyter notebook
然后浏览器会自动打开一个页面,你就能看到文件目录了。新建一个Notebook,选Python 3内核,就可以开始写代码了。
我的个人习惯:我会在Notebook里先写一个“环境检查”的单元格,把TensorFlow/PyTorch版本、CUDA是否可用、Python版本都打印出来。这样每次开始新项目,第一件事就是跑这个单元格,确保环境没问题。省得写到一半才发现环境不对,那才叫崩溃。
这里给你一个环境检查的代码模板,直接复制到你的Notebook里:
import sys
import tensorflow as tf
import torch
print(f"Python版本: {sys.version}")
print(f"TensorFlow版本: {tf.__version__}")
print(f"PyTorch版本: {torch.__version__}")
print(f"CUDA可用: {torch.cuda.is_available()}")
if torch.cuda.is_available():
print(f"GPU型号: {torch.cuda.get_device_name(0)}")
print(f"CUDA版本: {torch.version.cuda}")
3.5 环境搭建常见问题与解决方案
我把这些年遇到最多的几个问题整理成了表格,你遇到类似情况可以直接查:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
pip install 速度极慢 |
默认连的是国外源 | 用国内镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名 |
torch.cuda.is_available() 返回 False |
CUDA版本不匹配或没装对 | 用 nvidia-smi 检查驱动版本,去PyTorch官网重新生成安装命令 |
| Jupyter Notebook 内核连接不上 | 虚拟环境没注册到Jupyter | 运行 python -m ipykernel install --user --name=eeg_env |
| ImportError: No module named 'xxx' | 包装到了别的环境 | 检查当前激活的是哪个环境:conda info --envs |
最后说一句:环境搭建这件事,第一次搞确实烦。但搞过一次之后,后面就轻车熟路了。而且,你想想看,后面几十章的代码都要跑在这个环境上,现在花点时间把地基打牢,绝对值。