繁体   English   中英

Keras:输入 0 与层 conv1d_5 不兼容:预期 ndim=3,发现 ndim=2

[英]Keras: Input 0 is incompatible with layer conv1d_5: expected ndim=3, found ndim=2

我是 Keras 的初学者。 我在这里使用了一个带有 20 个特征的简单数据集作为回归模型。 我不断收到预期 ndim=3 的错误,发现 conv2d 层的 ndim=2。 这是我的代码:

def buildreg():
    regressor=Sequential()
    regressor.add(Dense(units=170,input_dim=20))
    regressor.add(Dense(units=25))
    regressor.add(Conv1D(16,5))
    regressor.add(Dense(units=100))
    regressor.add(Dense(units=55))
    regressor.add(Dense(units=10))
    regressor.add(Dense(units=60))
    regressor.add(Dense(units=1))
    regressor.compile(optimizer='adam',loss='mean_absolute_error')
    return regressor
from keras.wrappers.scikit_learn import KerasRegressor
model=KerasRegressor(build_fn=buildreg,batch_size=15,epochs=20)

输入是一个具有 20 个特征的数据框。 数据集是一个非常小的数据集,大约 1k 行。 我完全清楚它会过拟合的事实。 处理得当。 数据与 MLPRegressor 一起工作得很好。

1) 如果你想使用 Conv1D 那么使用 Conv1D 作为第一层并指定 input_shape 如下

input_shape=(N_features, 1)

并重塑您的火车以塑造(nb_of_examples,nb_of_features,1)。

因此,您修改后的代码将如下所示,

Processed--XTRAIN = Processed--XTRAIN.reshape(1457,20,1)

def buildreg():
    regressor=Sequential()
    regressor.add(Conv1D(16,5,input_shape=(20, 1)))
    regressor.add(Dense(units=170,input_dim=20))
    regressor.add(Dense(units=25))
    regressor.add(Dense(units=100))
    regressor.add(Dense(units=55))
    regressor.add(Dense(units=10))
    regressor.add(Dense(units=60))
    regressor.add(Dense(units=1))
    regressor.compile(optimizer='adam',loss='mean_absolute_error')
    return regressor
from keras.wrappers.scikit_learn import KerasRegressor
model=KerasRegressor(build_fn=buildreg,batch_size=15,epochs=20)

2)否则,您可以删除卷积层并构建简单的ANN模型。 只需使用 Dense 层来构建您的模型。

你的代码看起来像这样

def buildreg():
    regressor=Sequential()
    regressor.add(Dense(units=170,input_dim=20))
    regressor.add(Dense(units=25))
    regressor.add(Dense(units=100))
    regressor.add(Dense(units=55))
    regressor.add(Dense(units=10))
    regressor.add(Dense(units=60))
    regressor.add(Dense(units=1))
    regressor.compile(optimizer='adam',loss='mean_absolute_error')
    return regressor
from keras.wrappers.scikit_learn import KerasRegressor
model=KerasRegressor(build_fn=buildreg,batch_size=15,epochs=20)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM