【问题标题】:ValueError: expected min_ndim=3, found ndim=2ValueError:预期 min_ndim=3,发现 ndim=2
【发布时间】:2021-02-14 07:01:23
【问题描述】:

我正在尝试将输入分类。

形状是:

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]

我们如何解决这个错误?

【问题讨论】:

  • 另一个帐户也提出了相同的问题,例如stackoverflow.com/questions/64612084/… 是你吗,如果是,你为什么要创建新帐户?
  • 好的,您仍然应该考虑为什么您的朋友问题已关闭。你有完全相同的问题,你使用了错误的模型。您当前的模型旨在处理一维向量的序列,而您似乎有图像(不是序列)。您应该重新考虑模型,例如不需要 TimeDistributed。

标签: python python-3.x tensorflow machine-learning keras


【解决方案1】:

Conv1D 接受形状的输入:

3+D 张量,形状为:batch_shape + (steps, input_dim)

如果您的数据只是 2D,请添加一个虚拟维度:

df_train = df_train[..., None]
df_validation = df_validation[..., None]

还相应地修改 batch_input_shape=(32, 1, 380) 为:batch_input_shape=(32, 380, 1) 或者完全省略它

其他更改(处理此虚拟数据):

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())

【讨论】:

  • 我的意思是我写的“添加一个虚拟维度”。试一试,看看你的 df_train 在这些线之后的形状是什么。这就是它的样子。
  • 哦,它是熊猫数据框,请先将其更改为numpy数组
  • 正是我们正在评论的我的回答中的样子
  • 没有标签的合身效果如何?使用训练数据列中的最后一个元素而不是 y_train 的单个标签列是否合适?
猜你喜欢
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
  • 2022-07-13
  • 2019-06-22
  • 2021-04-08
  • 2019-07-13
  • 1970-01-01
相关资源
最近更新 更多