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

TensorFlow可变尺寸图像输入(自编码器、超分等)解决方案问询

警告 不建议使用不同尺寸的图像作为输入,因为张量需要具备相同尺寸才能实现并行计算。

解决方案

你当前使用的超分模型输入定义为shape=(None, None, 3),天生支持任意尺寸的单张图像输入,所有报错本质是数据集构造时默认要求同批次内张量尺寸对齐,可通过以下两种方案解决:

方案1:按尺寸分组批处理(兼顾并行效率,适配你当前的文件结构)

你的数据集已经按文件夹做好了尺寸分类,可分别为每个尺寸的图像构造独立数据集,同尺寸图像成批后再混合训练,完全复用并行计算能力:

  • 分别读取三个文件夹内的图像,每个文件夹生成独立的tf.data.Dataset实例,同尺寸图像内部做批处理
  • 用tf.data.Dataset.sample_from_datasets接口合并三个数据集,随机采样不同尺寸的批次送入训练
    示例代码如下:
import tensorflow as tf
import os
from tensorflow import keras
from tensorflow.keras import layers

# 图像加载与预处理函数
def load_img(img_path):
    img = tf.io.read_file(img_path)
    img = tf.image.decode_png(img, channels=3)
    img = tf.cast(img, tf.float32) / 255.0
    # 超分任务的标签按需替换为对应高清图,这里示例用自监督逻辑
    return img, img

# 分别构造三个尺寸的数据集,每批8张图
ds_50 = tf.data.Dataset.list_files("./1/*.png").map(load_img).batch(8)
ds_100 = tf.data.Dataset.list_files("./2/*.png").map(load_img).batch(8)
ds_200 = tf.data.Dataset.list_files("./3/*.png").map(load_img).batch(8)

# 合并数据集,均匀采样不同尺寸的批次
combined_ds = tf.data.Dataset.sample_from_datasets([ds_50, ds_100, ds_200])

# 你的原有模型代码
input_img = keras.Input(shape=(None, None, 3))
upscaled = layers.UpSampling2D((2, 2), interpolation='bilinear')(input_img)
out = layers.Conv2D(3, (3, 3), activation='sigmoid', padding='same')(upscaled)
conv_model = keras.Model(input_img, out)
conv_model.compile(optimizer='adam', loss=tf.keras.losses.MeanSquaredError())

# 直接训练即可
conv_model.fit(combined_ds, epochs=50)

方案2:单样本训练(适配尺寸完全随机的场景)

如果后续有更多零散尺寸的图像,不需要分组,直接取消批处理维度,每次送入1张图像训练即可:

# 读取所有文件夹内的图像
all_img_paths = []
for root, _, files in os.walk("./"):
    for f in files:
        if f.endswith(".png"):
            all_img_paths.append(os.path.join(root, f))

# 构造无批处理的数据集,每次返回单张图像
ds = tf.data.Dataset.from_tensor_slices(all_img_paths).map(load_img)

# 直接训练即可
conv_model.fit(ds, epochs=50)
过往报错原因说明
  • 形状不匹配报错:之前的自定义生成器添加了批处理维度,但同批次内图像尺寸不同,无法对齐为标准张量
  • 梯度、数据类型等报错:大多是自定义生成器返回的数值类型、标签配对不符合TensorFlow要求,使用官方tf.dataAPI构造数据集可避免这类问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:06:05