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

如何调整Keras函数式API模型输出形状?Reshape层无效求助

如何重塑Keras模型的输出?

你当前的问题是模型输出形状为(n,1),希望直接得到(n,)的形状以匹配y_test,无需事后手动reshape。你尝试的Reshape层未生效,是因为参数设置有误:Reshape(target_shape=(1,))只是将输出维持为一维(每个样本对应一个长度为1的向量),并没有去掉这个额外维度。

解决方案1:使用Reshape(target_shape=())

将Reshape的目标形状设为空元组,即可完全挤压掉最后一个维度:

import numpy as np
from tensorflow.keras.layers import Input, Conv1D, MaxPooling1D, Flatten, Dense, Reshape
from tensorflow.keras.models import Model

# 修正输入维度:给X添加最后一维以匹配Input(shape=(3,1))
X=np.random.rand(100,3)
X = np.expand_dims(X, axis=-1)
y=np.random.rand(100)
 
X_train, X_test = np.vsplit(X,[80])
y_train, y_test = np.split(y,[80])

# 定义模型
inputs=Input(shape=(3,1))
h=Conv1D(filters=64,kernel_size=2, activation='relu')(inputs)
h=MaxPooling1D(pool_size=2)(h)
h=Flatten()(h)
h=Dense(50, activation='relu')(h)
h=Dense(1)(h)
outputs=Reshape(target_shape=())(h)  # 空元组实现维度挤压

model=Model(inputs=inputs, outputs=outputs)
model.compile(optimizer='adam', loss='mse')
 
model.fit(X_train, y_train,verbose=0)
print(model.predict(X_test).shape)  # 输出(20,)

解决方案2:使用Lambda层挤压维度

通过Lambda层调用tf.squeeze去掉最后一个维度,效果和上述方法一致:

import numpy as np
import tensorflow as tf
from tensorflow.keras.layers import Input, Conv1D, MaxPooling1D, Flatten, Dense, Lambda
from tensorflow.keras.models import Model

X=np.random.rand(100,3)
X = np.expand_dims(X, axis=-1)
y=np.random.rand(100)
 
X_train, X_test = np.vsplit(X,[80])
y_train, y_test = np.split(y,[80])

inputs=Input(shape=(3,1))
h=Conv1D(filters=64,kernel_size=2, activation='relu')(inputs)
h=MaxPooling1D(pool_size=2)(h)
h=Flatten()(h)
h=Dense(50, activation='relu')(h)
h=Dense(1)(h)
outputs=Lambda(lambda x: tf.squeeze(x, axis=-1))(h)  # 挤压最后一维

model=Model(inputs=inputs, outputs=outputs)
model.compile(optimizer='adam', loss='mse')
 
model.fit(X_train, y_train,verbose=0)
print(model.predict(X_test).shape)  # 输出(20,)

额外注意

你的原始代码存在输入维度不匹配的问题:Input(shape=(3,1))要求输入数据形状为(样本数, 3, 1),但初始生成的X是(100,3),必须通过np.expand_dims(X, axis=-1)添加最后一维,否则训练时会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 03:16:06