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

加载fMRI数据集时X_train维度为(0,64,256,1)的问题求助

问题排查:fMRI图像加载后样本数为0的原因和解决办法

我来帮你一步步排查这个问题,你遇到的X_train: (0, 64, 256, 1)说明最终没有加载到任何图像,主要有几个核心原因和对应的修复方法:

1. 最致命的错误:列表添加操作写错了

你代码里的imgs.show(img)完全是误用——Python的普通列表list根本没有show()方法!你肯定是想把读取到的图像添加到列表中,所以这里必须改成imgs.append(img)。如果不改的话,imgs永远是空列表,转成numpy数组自然就是样本数为0的空数组了。

2. Windows路径的转义陷阱

你的路径字符串"C:\Users\Administrator\fmri_deep_learning\origin"里的\U、\f会被Python当成转义字符解析,导致实际生成的路径和你预期的不一致,自然找不到目标文件夹。解决办法二选一:

  • 使用原始字符串(推荐):
    mypath = r"C:\Users\Administrator\fmri_deep_learning\origin"
    
    (前面的r表示“原始字符串”,Python会直接保留所有字符,不解析转义)
  • 用双反斜杠替换单反斜杠:
    mypath = "C:\\Users\\Administrator\\fmri_deep_learning\\origin"
    

3. 没有匹配到目标.tif文件

有可能是文件夹里的图像后缀是大写的.TIF,而glob.glob("*.tif")默认严格匹配小写后缀(虽然Windows文件系统不区分大小写,但Python的glob模块在Windows下还是会按规则匹配)。你可以改成大小写不敏感的匹配:

all_img_paths = glob.glob(os.path.join(mypath, "*.[tT][iI][fF]"))

另外,建议在获取路径列表后加一行打印,快速确认是否找到文件:

print(f"共找到 {len(all_img_paths)} 个tif格式文件")

如果输出是0,那就要再次核对路径是否正确,或者目标文件夹里确实没有.tif/.TIF文件。

修复后的完整代码示例

import os
import glob
import cv2
import numpy as np

imgs = []
# 使用原始字符串避免路径转义问题
mypath = r"C:\Users\Administrator\fmri_deep_learning\origin"
# 匹配大小写不敏感的tif文件
all_img_paths = glob.glob(os.path.join(mypath, "*.[tT][iI][fF]"))
# 打印找到的文件数量,方便排查
print(f"共找到 {len(all_img_paths)} 个tif格式文件")

for img_path in all_img_paths:
    img = cv2.imread(img_path, 0)
    # 确保图像读取成功(避免损坏的文件导致None)
    if img is not None:
        img = img.astype('float32') / 255.
        imgs.append(img)  # 这里改成append,不是show!

X = np.array(imgs)
X_train = X.reshape(X.shape[0], 64, 256, 1)
X_test = X_train.copy()
print("X_train:", X_train.shape)

内容的提问来源于stack exchange,提问作者闕翊芬

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:32:47