我正在尝试构建“多头CNN模型”,因此每个头都是一个分支,其中包含各个多变量时间序列数据。
我尚不清楚如何处理“ fit”方法,或者换句话说如何正确准备y_train。标签有2个类别0和1
当前架构如下所示。
目标是预测提前一个时间
输入形状为:
A Training Data (1, 903155, 5)
B Training Data (1, 903116, 5)
C Training Data (1, 902996, 5)
标签形状:
y_train (903155, 1)
执行时:
history = model.fit(x = [A,B,C], y = y_in)
比我得到的:
Input arrays should have the same number of samples as target arrays. Found 1 input samples and 903155 target samples.
将y_in重塑为(1,903155)将导致:
expected dense_5 (see image) to have shape (1,) but got array with shape (903155,)
奇怪的是 model.predict([A,B,C])产生结果
答案 0 :(得分:2)
问题的根源是对批处理维度的处理不当;图层和数据的第一个维度是批处理维度。错误说明如下。
解决方案:
y_train (903155, 1)
是正确的,但是A, B,
和C
可能不正确:它们分别指定一个维度为(903155, 5), (903116, 5),
和(902996, 5)
的样本。我怀疑这是否是理想的-90...
的批量尺寸是 ,应该重塑为:(903155, 1, 5)
,等等。
错误说明:
dense_5
的输出形状为(None, 1)
,但在计算损耗时可以与(None, 903155)
进行比较输入数组应具有与目标数组相同数量的样本。找到1个输入样本和903155个目标样本。 #错误1
预计density_5的形状为(1,),但数组的形状为(903155,)#错误2
答案 1 :(得分:-1)
经过一番挖掘,我发现了答案,因为OverLordGoldDragon提到输入和输出形状不正确。
一维转换期望输入数据始终为: (样本,timesteps_per_sample,features_per_sample)
所以就我而言(1,903155,5)->(903155,1,5)