【问题标题】:Data reshaping for Keras not working with K-Fold ValidationKeras 的数据重塑不使用 K-Fold 验证
【发布时间】:2020-11-13 10:46:09
【问题描述】:

我有一个数据集,我正在为 Keras 网络塑造如下:

scaler.fit(X)
X_Scaled = pd.DataFrame(scaler.transform(X.values), columns=X.columns, index=X.index)
X_Scaled.info()

X_data = X_Scaled.values
X_data = X_data.reshape((X_data.shape[0],X_data.shape[1],1))

y = to_categorical(y)

整形的结果是这个y.shape = (13609, 5)X_data.shape = (13609, 61, 1)

然后我尝试在数据集上使用 KFold 验证,并将 Keras 神经网络包装到以下循环中:

from sklearn.model_selection import KFold
num_folds = 10
kfold = KFold(n_splits=num_folds, shuffle=True)

acc_per_fold = []
loss_per_fold = []

fold_no = 1
for train, test in kfold.split(X_data, y):
    model = models.Sequential()
    model.add(Dense(128, activation='tanh' ,input_dim = 61))
    model.add(layers.Dropout(0.3))
    model.add(Dense(128, activation='relu', kernel_regularizer = keras.regularizers.l1(0.001)))
    model.add(Dense(62, activation='relu', kernel_regularizer = keras.regularizers.l2(0.001)))
    model.add(layers.Dropout(0.35))
    model.add(Dense(32, activation='relu', kernel_regularizer = keras.regularizers.l1(0.001) ))
    model.add(Dense(5, activation='softmax'))
    
    model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
    history = model.fit(X_data[train], y[train], epochs=175,  batch_size=64, validation_split = 0.15, shuffle = True, verbose=2)
   
    #Generate generalization metrics
    scores = model.evaluate(X_data[test], y[test], verbose=0)

此网络在没有 KFold 验证的情况下在循环外作为独立网络可以正常工作,但在此循环内则不行。

我得到的错误是这样的

ValueError: Error when checking input: expected dense_66_input to have 2 dimensions, but got array with shape (12248, 61, 1)

但我不明白这 2 个维度发生在哪里。

我怀疑我错误地使用了 Kfold for 循环,但我找不到原因。任何人都可以对此提出一些建议吗?谢谢

【问题讨论】:

    标签: python-3.x keras neural-network k-fold


    【解决方案1】:

    正如你提到的:X_data.shape = (13609, 61, 1) 这意味着 X_data 有 3 个维度,但密集层只需要 2 个维度。

    【讨论】:

      【解决方案2】:

      您的训练 x 数据有 3 个维度,但您的网络需要 2 个维度 (input_dim = 61)。删除三维:

      X_data=np.squeeze(X_data)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-25
        • 2016-10-21
        • 2011-10-01
        • 2019-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        相关资源
        最近更新 更多