我们为什么要重塑数据?

问题描述

我有一个包含100,000行和12列的数据集,其中每列代表某个输入,以训练一个顺序GRU模型以仅预测1个输出。以下是该模型的代码

model = Sequential()
model.add(GRU(units=70,return_sequences=True,input_shape=(1,12),activity_regularizer=regularizers.l2(0.0001)))
model.add(GRU(units=50,dropout=0.1))
model.add(GRU(units=30,dropout=0.1))
model.add(Dense(units=5))
model.add(Dense(units=3))
model.add(Dense(units=1,activation='relu'))
model.compile(loss=['mae'],optimizer=Adam(lr=0.0001),metrics=['mse']) 
model.summary() 
history=model.fit(X_train,y_train,batch_size=1000,epochs=30,validation_split=0.1,verbose=1)

但是,在此之前,我必须使用x_train=x.reshape(-1,1,12)将训练数据集从2D转换为3D,并使用y_train=y.reshape(-1,1)将训练数据集从1D转换为2D。那是我真的不明白的部分,为什么不保留它们原样?

解决方法

为了决定性,您必须描述数据。
但是由于每层的输出都是下一层的输入,因此它们的形状必须相等。在不完整的示例中,您给标签指定的每个样本标签值必须是一个值,这就是为什么要使用重塑的原因。