为Keras重塑1D Numpy阵列

2024-04-26 08:04:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用keras,当我试着模型.拟合它抛出一个错误,因为X_Train和Y_Train输入具有不兼容的形状。在

我的数据是一个10输入1输出的系统。我用数据的9次迭代作为测试,所以我有一个9个向量的列表,形状是[10,1],所以,可以理解,X_火车.形状=[9,10,1]。我的输出是一个由9个值组成的列表_火车.形状=[9,1]。但我得到了一个错误:

tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [9,1] vs. [9,10,1]

我估计Y峈列向量的正确形状必须是[9,1,1],但找不到一种方法来塑造它。在

基于此,我有两个问题:根据我对问题的描述,[9,1,1]是正确的预期形状吗?我如何使它符合预期的形状?在


Tags: 数据模型列表tensorflow系统错误trainframework
1条回答
网友
1楼 · 发布于 2024-04-26 08:04:48

通过keras中计算图形的输入形状属于以下类型:

(?, x.shape[1], x.shape[2], ....)   #As seen in model.summary()

第一个?是传递样本(数据集中的行)的通道。您可以成批传递它们,因此这是您在拟合模型本身时定义的内容。在

但是,当设置层的形状时,可以将其设置为

^{pr2}$

Keras会在批处理开始时自动添加第一个通道。 所以,如果数据集中的每一行都是长度为10的一维数组。然后

## For keras functional API
inp = Input((10,))

## For keras sequential API
model = Sequential([
    Dense(32, input_shape=(10,))
])

如果使用的是三维数据集,其中数据集中的每个“行”或样本都是(10,10)形状的二维数组:

## For keras functional API
inp = Input((10,10))

## For keras sequential API
model = Sequential([
    Dense(32, input_shape=(10,10))
])

具体到您的问题,因为您有一个9数组的形状(10,1)的列表。你应该简单地忽略9,因为这是在第一个通道上作为(?)传递的?,10,1)。所以将输入形状定义为(10,)或(10,1)

相关问题 更多 >