Tensorflow 1.x安装教程
·
Tensorflow 安装教程
在文章复现的时候发现,大部分经典文章采用的框架都是tensorflow 1.x版本,然而1.x版本限制了cuda10版本,现如今2025年cuda版本早就在12了,只能支持tensorflow2.x版本的,但使用2.x版本的时候有需要将源代码进行修改使其能兼容1.x版本。为了在安装1.x版本的同时又不对cuda版本进行降级由此写下这篇文章。
思路:用 conda 在虚拟环境中安装 CUDA 10.x 运行时 和 cuDNN 7,与系统驱动解耦;然后安装
tensorflow-gpu==1.15.5。这样既能跑 TF1.x,又不影响全局 CUDA 12+ 环境。
1) 环境准备与约束
- 操作系统:建议 Linux x86_64(TF1.x GPU 官方 wheel 主要面向该平台)。
- Python 版本:3.7(TF1.15.x 最稳)。
- NVIDIA 驱动:需兼容 CUDA 10.x(一般较新的驱动向后兼容;无需卸载或降级系统驱动)。
2) 快速安装步骤(GPU)
2.1 创建并进入 conda 环境
conda create -n TF1 python=3.7 -y
conda activate TF1
2.2 在环境内安装 CUDA 10.x 与 cuDNN 7
当前用的是 10.1 + cuDNN 7.6.5;若遇到缺库报错,可改用
cudatoolkit=10.0试一下。
conda install cudatoolkit=10.1 cudnn=7.6.5 -c conda-forge -c nvidia
2.3 安装 TensorFlow 1.15.5(GPU)
pip install "tensorflow-gpu==1.15.5"
# 让 TF 在本环境内能找到 cudatoolkit/cuDNN 的动态库
export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH"
3) 验证 GPU 是否可用
python - <<'PY'
import os, glob, tensorflow as tf
print("TF version:", tf.__version__)
print("Built with CUDA:", tf.test.is_built_with_cuda())
print("GPU available:", tf.test.is_gpu_available(cuda_only=True))
print("cuDNN libs:",
[os.path.basename(p) for p in glob.glob(os.path.join(os.environ.get("CONDA_PREFIX",""), "lib", "libcudnn.so*"))][:3])
PY
预计输出:
- 版本:
1.15.5 Built with CUDA: TrueGPU available: True- 能列出
libcudnn.so*
4) 常见兼容包固定(避免新版本不兼容)
你的固定组合是合理的,直接照用:
pip install --no-cache-dir "protobuf==3.19.6"
pip install --no-cache-dir "numpy==1.19.5" "h5py==2.10.0"
5) 常见问题
A. ImportError: libcublas.so.10.0/10.1 not found
-
原因:TF1.15 的 wheel 需 10.x 的 CUDA 运行库。
-
解决:在 当前 conda 环境 内安装对应
cudatoolkit(10.0 或 10.1)与cudnn,并确认:echo $CONDA_PREFIX ls $CONDA_PREFIX/lib/libcublas.so* ls $CONDA_PREFIX/lib/libcudnn.so*若还不行,导出库路径:
export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH"
B. TypeError / AttributeError 与 protobuf>=4 相关
- 解决:把
protobuf固定到3.19.x。
C. h5py/numpy ABI 不兼容
- 解决:按上面的固定版本来(
h5py==2.10.0,numpy==1.19.5)。
D. 看得到 GPU,但 TF 报 OOM 或分配失败
-
试试按需增长:
import tensorflow as tf config = tf.ConfigProto() config.gpu_options.allow_growth = True sess = tf.Session(config=config)
E. 明明装了 GPU 版,却只跑 CPU
- 检查是否进入了正确的 conda 环境(
which python、pip show tensorflow-gpu)。 - 检查是否误设置了
CUDA_VISIBLE_DEVICES=""。 - 再次确认
LD_LIBRARY_PATH指向了$CONDA_PREFIX/lib。
6) 在 TF2.x 中复现 TF1.x 代码
TF2.x 上跑 1.x ,要加入:
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
sess = tf.compat.v1.Session()
# 其余 1.x API 用 tf.compat.v1.* 访问
7) 可选:容器方案(避免污染宿主)
如果你的团队更偏好可移植方案,可以选 CUDA 10.x + cuDNN 7 的基础镜像,在容器内用上面相同的步骤 pip install tensorflow-gpu==1.15.5 并挂载数据目录。适合多人复现与集群任务。
8) 完整流程
# 1) env
conda create -n TF1 python=3.7 -y
conda activate TF1
# 2) CUDA runtime & cuDNN in env
conda install cudatoolkit=10.1 cudnn=7.6.5 -c conda-forge -c nvidia
# 3) TF1 GPU
pip install "tensorflow-gpu==1.15.5"
export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH"
# 4) pins
pip install --no-cache-dir "protobuf==3.19.6"
pip install --no-cache-dir "numpy==1.19.5" "h5py==2.10.0"
# 5) verify
python - <<'PY'
import os, glob, tensorflow as tf
print("TF version:", tf.__version__)
print("Built with CUDA:", tf.test.is_built_with_cuda())
print("GPU available:", tf.test.is_gpu_available(cuda_only=True))
print("cuDNN libs:", [os.path.basename(p) for p in glob.glob(os.path.join(os.environ.get("CONDA_PREFIX",""), "lib", "libcudnn.so*"))][:3])
PY
更多推荐
所有评论(0)