ValueError:检查输入时出错:预期conv1d\u 81\u input为shape(177100),但得到了shape(1177)的数组

2024-04-19 18:19:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码中有这个错误有人能帮我吗?? 如何固定输入数组以满足输入形状?你知道吗

我的数据是:{引用的原始数据集由5个不同的文件夹组成,每个文件夹有100个文件,每个文件代表一个主题/个人。每个文件都记录了23.6秒的大脑活动。相应的时间序列被采样到4097个数据点。每个数据点都是不同时间点的脑电图记录值。我们总共有500个人,每个人有4097个数据点,持续23.5秒。你知道吗

我们将4097个数据点分成23个数据块,每个数据块包含178个数据点,持续1秒,每个数据点是不同时间点的脑电记录值。所以现在我们有23x500=11500条信息(行),每条信息包含178个数据点1秒(列),最后一列表示标签y{1,2,3,4,5}。}你知道吗

cvacc =[]
j=0
kf=KFold(n_splits=10, random_state=None, shuffle=False)
for train_index, test_index in kf.split(X):
    print('\nFold ',j)
    X_train, X_test = X[train_index], X[test_index] 
    y_train, y_test = y[train_index], y[test_index]

    # create model
    # 1D CNN neural network
    model = Sequential() 
    model.add(Conv1D(filters=10, kernel_size=10,             
    strides=1,activation='relu', input_shape=(3450,177)))
    model.add(Conv1D(filters=10, kernel_size=10, strides=1))
    model.add(MaxPooling1D(2))
    model.add(Conv1D(30,10,activation='relu', strides=1))
    model.add(Conv1D(30,10,activation='relu', strides=1))
    model.add(MaxPooling1D(2))
    model.add(Conv1D(60,10,activation='relu', strides=1))
    model.add(Conv1D(60,10,activation='relu', strides=1))
    model.add(MaxPooling1D(2))
    model.add(Conv1D(90,10,activation='relu', strides=1))
    model.add(Conv1D(90,10,activation='relu', strides=1))
    model.add(MaxPooling1D(2))
    model.add(Conv1D(120,10,activation='relu', strides=1))
    model.add(Conv1D(120,10,activation='relu', strides=1))
    model.add(MaxPooling1D(2))
    model.add(Flatten())
    model.add(Dense(50))
    model.add(Dense (20))
    model.add(Dense (5,activation='softmax'))
    # print(model.summary())

    model.compile(loss='categorical_crossentropy',
          optimizer='adam',
          metrics=['accuracy'])

    print(X_train.shape)
    print(X_test.shape)
# X_train= 
np.reshape(X_train(X_train.shape[0],X_train.shape[1],X_train.shape[1]))

history=model.fit(X_train, y_train, batch_size=3, 
epochs=15,validation_split=0.1)

Tags: 文件数据testaddindexmodel记录train
1条回答
网友
1楼 · 发布于 2024-04-19 18:19:43

根据dochttps://keras.io/layers/convolutional/,您的输入应该是形状为(batch_size, steps, input_dim)的三维张量,其中batch_size是批中的序列数,steps是序列中的时间步数,input_dim是序列中一个步骤的维数。对你来说,steps = 178。你知道吗

尝试将模型中的第一行更改为:

model.add(Conv1D(filters=10, kernel_size=10,             
    strides=1,activation='relu', input_shape=(178, 1)))

(我们不必提及batch_size值。在训练之前,它可能是不确定的。)

训练数据必须满足这些维度。 X_train.shape应该是(*, 178, 1)

注意:由于图层不正确,您将得到进一步的错误。在第三个池层之后,步数将是6,下一个卷积层的stride为10(>;6),并且将给出错误。你必须重新配置图层。你知道吗

相关问题 更多 >