You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Keras结合symlinks时遇FileNotFoundError错误求助

问题排查与解决方法

针对你遇到的FileNotFoundError,结合Colab环境和符号链接的特性,可能的原因和解决方式如下:

1. 本地生成的符号链接使用了绝对路径

本地创建符号链接时如果用了绝对路径,上传到Colab后,路径指向的是本地设备的文件系统,而Colab的环境中不存在该路径,导致follow链接时找不到原始文件。

解决:
在Colab环境内重新生成相对路径的符号链接,而不是在本地生成后上传。示例代码:

import os

# 假设原始数据集在Colab的/content/original_data下,训练集结构在/content/train下
original_path = "/content/original_data"
train_path = "/content/train"

# 创建类别文件夹
os.makedirs(os.path.join(train_path, "class0"), exist_ok=True)
os.makedirs(os.path.join(train_path, "class1"), exist_ok=True)

# 为class0生成相对路径符号链接
for img_name in os.listdir(os.path.join(original_path, "class0")):
    # 计算原始文件相对于符号链接所在目录的相对路径
    src = os.path.relpath(os.path.join(original_path, "class0", img_name), 
                          os.path.join(train_path, "class0"))
    dst = os.path.join(train_path, "class0", img_name)
    os.symlink(src, dst)

# 同理处理class1

2. 符号链接与原始文件不在同一文件系统

如果原始文件存储在Google Drive,而你把本地生成的符号链接上传到Colab的临时目录(/content/),两者属于不同的挂载文件系统,符号链接会直接失效。

解决:
确保符号链接和原始文件在同一文件系统内:

  • 将原始数据集放在Google Drive中,挂载Drive后直接在Drive目录下生成符号链接;
  • 或把原始数据集复制到Colab本地临时目录(/content/),再生成符号链接。

3. 文件权限问题

Colab中符号链接指向的原始文件可能没有读取权限,导致无法访问。

解决:
用命令行检查符号链接的指向和权限:

!ls -l /content/train/class0/

如果输出显示目标文件不存在或权限不足,可修改原始文件的权限:

!chmod -R 644 /content/original_data/

4. flow_from_directory的路径配置问题

确认flow_from_directory的directory参数指向符号链接所在的文件夹,且路径正确。示例代码:

from tensorflow.keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator(rescale=1./255)
train_generator = datagen.flow_from_directory(
    '/content/train',  # 确保是符号链接文件夹的正确绝对路径
    target_size=(224, 224),
    batch_size=32,
    class_mode='binary',
    follow_links=True
)

内容的提问来源于stack exchange,提问作者Teresa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 12:45:35