2、环境搭建:TensorFlow 2.x安装、GPU配置、数据集准备与目录结构

说实话,做多模态项目最怕什么?不是模型调不好,而是环境搭到一半崩溃了。我见过太多同学卡在安装这一步,一卡就是半天。今天咱们就把这事一次性搞定。

2.1 TensorFlow 2.x 安装:选对版本很重要

我个人习惯用 TensorFlow 2.102.12。为什么?因为这两个版本对 GPU 支持最稳。2.11 之后官方把 Windows 的 GPU 支持砍了,你要是用 Windows,老老实实装 2.10。

安装命令很简单,但有个坑:千万别直接 pip install tensorflow。你想想看,这样装的是最新版,万一跟你的 CUDA 版本不匹配,后面全白搭。

推荐安装方式:

# 创建虚拟环境(我建议用 conda)
conda create -n tf_multimodal python=3.9
conda activate tf_multimodal

# 安装 TensorFlow 2.12(CPU 版)
pip install tensorflow==2.12.0

# 或者 GPU 版(Linux 下)
pip install tensorflow==2.12.0

小技巧: 装完后跑一句 python -c "import tensorflow as tf; print(tf.__version__)",看到版本号就说明成了。我曾经遇到过装完显示成功,但 import 就报错的情况——后来发现是 Python 版本太高,3.11 跟 TF 2.10 不兼容。

2.2 GPU 配置:让训练飞起来

做多模态,图像、音频处理都吃 GPU。没有 GPU?嗯,小数据集还能忍,稍微大一点你就知道什么叫「度日如年」。

GPU 配置分三步走:

  1. 装驱动:NVIDIA 官网下对应型号的驱动
  2. 装 CUDA:TF 2.12 对应 CUDA 11.8
  3. 装 cuDNN:记得版本要匹配

避坑指南: 我曾经在 Ubuntu 上折腾了一整天,就是因为 CUDA 装了两个版本,系统路径乱了。后来学乖了,用 nvcc --version 先确认当前 CUDA 版本,再装对应的 TF。

验证 GPU 是否可用:

import tensorflow as tf
print("GPU 可用:", tf.config.list_physical_devices('GPU'))

如果返回空列表,别慌。先检查驱动:nvidia-smi 能看到显卡信息吗?能看到的话,大概率是 CUDA 版本不对。

2.3 数据集准备:从零开始搭资源

咱们这门课要用到三类数据:图像、文本、音频。我建议你提前准备好以下数据集:

数据类型 推荐数据集 大小 用途
图像 Fashion-MNIST ~30MB 分类入门
文本 IMDB Reviews ~80MB 情感分析
音频 Speech Commands ~2.3GB 语音识别

下载方式很简单,TF 内置了这些数据集:

import tensorflow as tf

# 图像数据
fashion_mnist = tf.keras.datasets.fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()

# 文本数据
imdb = tf.keras.datasets.imdb
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=10000)

# 音频数据需要单独下载
# 我会在后续章节详细讲

个人经验: 第一次下载 IMDB 数据集时,因为网络问题老是超时。后来我直接去官网手动下载,放到 ~/.keras/datasets/ 目录下,再跑代码就秒过了。说白了,TF 的自动下载有时候不太靠谱,手动挡更稳。

2.4 目录结构:好习惯从第一天养成

我见过太多项目,代码、数据、模型全混在一个文件夹里。刚开始觉得方便,等做到第10个实验,找文件找到崩溃。所以咱们从一开始就定好规矩。

这是我的推荐结构:

multimodal_project/
├── data/               # 原始数据
│   ├── images/
│   ├── text/
│   └── audio/
├── processed_data/     # 预处理后的数据
├── models/             # 模型定义
├── notebooks/          # Jupyter 实验
├── logs/               # 训练日志
├── checkpoints/        # 模型权重
├── utils/              # 工具函数
│   ├── data_loader.py
│   └── preprocessing.py
├── config.py           # 配置文件
└── main.py             # 主入口

为什么这么分?你想想看:

  • data 和 processed_data 分开:原始数据不动,处理后的数据随时可以删了重来
  • checkpoints 单独放:训练到一半崩了,还能从断点继续
  • config.py 集中管理:改参数不用翻遍所有代码

我的习惯: 每个项目开始前,先花5分钟搭好目录结构。别小看这5分钟,后面能省你5小时。我曾经有个项目,因为目录混乱,误删了训练了一周的模型权重——从那以后,我再也不敢偷懒了。

2.5 验证环境:跑个完整流程

环境搭好了,数据准备好了,目录也建好了。最后一步:跑个完整的流程验证一下。

import tensorflow as tf
import numpy as np

# 1. 检查版本
print("TF 版本:", tf.__version__)

# 2. 检查 GPU
gpus = tf.config.list_physical_devices('GPU')
print("GPU 数量:", len(gpus))

# 3. 加载数据
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data()
print("数据形状:", x_train.shape)

# 4. 简单模型
model = tf.keras.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 5. 训练一小步
model.fit(x_train[:1000], y_train[:1000], epochs=1, verbose=1)

print("环境验证通过!")

看到「环境验证通过!」就说明一切正常。如果报错,别急,大概率是版本问题。我建议你直接去 TensorFlow 官网查版本对应表,比在网上搜乱七八糟的教程靠谱得多。

最后提醒一句: 别用 root 权限装 Python 包。我曾经图省事,sudo pip install 了一堆包,结果系统 Python 环境乱成一锅粥。老老实实用虚拟环境,出了问题直接删了重来,多省心。

好了,环境搭建就到这里。下一章咱们正式开始处理图像数据——说白了,这才是多模态的起点。