Python ValueError:预期最小值ndim=3,发现ndim=2
我正在尝试将输入分类 这些形状是:Python ValueError:预期最小值ndim=3,发现ndim=2,python,python-3.x,tensorflow,machine-learning,keras,Python,Python 3.x,Tensorflow,Machine Learning,Keras,我正在尝试将输入分类 这些形状是: df_train.shape: (17980, 380) df_validation.shape: (17980, 380) 然而,当我运行我的代码时,我得到了以下错误 ValueError: Input 0 of layer conv1d is incompatible with the layer: : expected min_ndim=3, found ndim=2. Full shape received: [32, 380] 如何修复此错误?C
df_train.shape: (17980, 380)
df_validation.shape: (17980, 380)
然而,当我运行我的代码时,我得到了以下错误
ValueError: Input 0 of layer conv1d is incompatible with the layer: : expected min_ndim=3, found ndim=2. Full shape received: [32, 380]
如何修复此错误?Conv1D接受形状输入: 带形状的3+D张量:批处理形状+(步骤,输入尺寸) 如果您的数据仅为二维,请添加一个虚拟标注,其中包含:
df_train = df_train[..., None]
df_validation = df_validation[..., None]
同时修改批次输入形状=(32,1380),相应修改为:batch输入形状=(32,380,1)
或者完全忽略它
其他更改(处理此虚拟数据):
我的意思是我写的“添加虚拟维度”。试试看,在这些线路之后,你的df_列车会是什么形状。这就是它的外观。哦,这是一个熊猫数据帧,请在之前将其更改为numpy数组。这就是它的外观,正如我在回答中所说的,我们正在对我们进行评论。其他帐户也会问同样的问题,例如,你,如果是,为什么要创建新帐户?好的,不过,你应该考虑为什么你的朋友问题是关闭的。你有完全相同的问题,你使用了错误的模型。您当前的模型旨在处理一维向量的序列,而您似乎有图像(不是序列)。您应该重新考虑模型,例如,不需要时间分布。
df_train = np.random.normal(size=(17980, 380))
df_validation = np.random.normal(size=(17980, 380))
df_train = df_train[..., None]
df_validation = df_validation[..., None]
y_train = np.random.normal(size=(17980, 1))
y_validation = np.random.normal(size=(17980, 1))
#train,test = train_test_split(df, test_size=0.20, random_state=0)
batch_size=32
epochs=5
model = Sequential()
model.add((Conv1D(filters=5, kernel_size=2, activation='relu', padding='same')))
model.add((MaxPooling1D(pool_size=2)))
model.add(LSTM(50, return_sequences=True))
model.add(LSTM(10))
model.add(Dense(1))
adam = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0)
model.compile(optimizer=adam, loss='mse', metrics=['mae', 'mape', 'acc'])
callbacks = [EarlyStopping('val_loss', patience=3)]
model.fit(df_train, df_validation, batch_size=batch_size)
print(model.summary())