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

Keras中Resizing层输出形状异常问题咨询

问题原因与解决方案

你的问题出在输入张量缺少通道维度,以及Keras Resizing 层对输入形状的预期上:

  • 你的输入形状是 (None, 224, 224),仅包含批量、高度、宽度三个维度,缺少灰度图像应有的单通道维度(1)。
  • Keras 的 Resizing 层默认期望输入是带通道的标准图像格式:
    • 默认 channels_last 格式下,输入应为 (None, H, W, C);
    • 若用 channels_first 格式,则为 (None, C, H, W)。
  • 当输入没有通道维度时,Resizing 层会误将最后一个维度(原宽度 224)当作通道数,同时将前两个维度调整为目标尺寸 (50, 50),最终输出形状显示为 (50, 50, 224)(层信息省略了批量维度 None)。

解决方案1:给输入添加通道维度(推荐)

这是符合Keras图像输入规范的标准做法:

import numpy as np

# 先给原始输入X扩展通道维度(假设X形状为(num_samples, height, width))
X = X[..., np.newaxis]  # 转换为(num_samples, height, width, 1)
height, width, _ = X.shape[1:]
input = keras.Input(shape=(height, width, 1), name='Input')

# 预处理函数无需修改
def definePreprocessing(trial):
    preprocessing = keras.Sequential(name='Preprocessing')
    preprocessing.add(keras.layers.Rescaling(name="Normalize", scale=1./255))
    preprocessing.add(keras.layers.Resizing(
            50, 
            50,
            interpolation="bilinear",
            name="Downsample"))
    return preprocessing

# 构建模型
preprocessing = definePreprocessing(trial)
preprocessed = preprocessing(input)

此时 Resizing 层会正确识别各维度,输出形状为 (None, 50, 50, 1),符合灰度图像的预期。

解决方案2:在预处理流程中补充通道维度

如果无法修改原始输入的形状,可以在预处理序列中加入 Reshape 层来补充通道:

def definePreprocessing(trial, height, width):
    preprocessing = keras.Sequential(name='Preprocessing')
    preprocessing.add(keras.layers.Rescaling(name="Normalize", scale=1./255))
    # 补充单通道维度
    preprocessing.add(keras.layers.Reshape((height, width, 1)))
    preprocessing.add(keras.layers.Resizing(
            50, 
            50,
            interpolation="bilinear",
            name="Downsample"))
    return preprocessing

# 调用时传入原始height和width
preprocessing = definePreprocessing(trial, height, width)
preprocessed = preprocessing(input)

调整后 Resizing 层会基于正确的维度进行尺寸缩放,输出形状为 (None, 50, 50, 1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:25:35