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

按顺序拆分配对张量为训练测试集时遇图像裁剪问题求助

解决Pix2Pix配对张量的训练/测试拆分问题

核心思路:保配对、防裁剪

train_test_split会打乱顺序破坏配对关系,直接手动按索引拆分就行——关键是对两个张量用完全一致的切片/索引规则,同时确保切片操作只针对样本维度,不碰图像本身的尺寸维度。

具体解决方法

1. 先确认张量维度

正常图像张量结构应该是(样本总数, 图像高度, 图像宽度, 通道数),第一维是样本数量,后面是图像本身的维度。如果你的张量维度顺序不对(比如通道数在前),切片很容易误改图像尺寸,先调整维度到标准格式。

2. 按比例连续拆分(最常用)

比如按8:2的比例拆分训练/测试集,直接对样本维度做切片,两个张量用完全相同的切片范围:

# 计算拆分点,比如取80%作为训练集
split_idx = int(len(real_image_tensors) * 0.8)

# 训练集:前80%的样本,保持real和drawing的索引完全对应
train_real = real_image_tensors[:split_idx]
train_drawing = drawing_tensors[:split_idx]

# 测试集:后20%的样本,同样配对无误
test_real = real_image_tensors[split_idx:]
test_drawing = drawing_tensors[split_idx:]

3. 非连续但仍配对的随机拆分(可选)

如果不想只用后20%当测试集,想随机选但保持配对,可以先生成固定索引数组再提取:

import numpy as np

# 生成所有样本的索引数组
indices = np.arange(len(real_image_tensors))
# 设置随机种子保证结果可复现,随机选80%的索引作为训练集
np.random.seed(42)
train_indices = np.random.choice(indices, size=split_idx, replace=False)
# 测试集索引是剩下的部分
test_indices = np.setdiff1d(indices, train_indices)

# 用索引提取样本,确保real和drawing一一对应
train_real = real_image_tensors[train_indices]
train_drawing = drawing_tensors[train_indices]
test_real = real_image_tensors[test_indices]
test_drawing = drawing_tensors[test_indices]

之前切片出现裁剪的原因

大概率是你误操作了图像的高度/宽度维度,比如写成了real_image_tensors[:, :split_idx]——这种写法会裁剪图像的宽度,而不是拆分样本。记住:要对第一维(样本数维度)做切片。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:18:27