【发布时间】:2021-10-05 20:21:59
【问题描述】:
我正在设计一个用于分类静息态 EEG 信号的神经网络。我已经对我的数据进行了预处理,这样每个主题的特征都是由一个包含 111 个通道的表格及其超过 2505 个时间步长的读数组成。作为降维的衡量标准,我将 111 个通道聚集到大脑的 10 个叶中,有效地将每个受试者的维度降低到 (2505,10)。由于这些数据是 2D 的,我认为它类似于用于灰度图像的 CNN。
我已将每个受试者的 EEG 数据编译成一个大小为(253、2505、10)的数据框,其中 253 是受试者的数量。相应的地面实况值存储在大小为 (253,1) 的列表中,其索引与数据帧中的索引匹配。我想建立一个分类器来判断受试者是多动症阳性还是阴性。我一直在设计神经网络,尤其是在将主题传递到第一层时面临维度问题。
#where X=[df0, df1, df2,......, df252] & y=[0,1,0,........,1]
# Model configuration
batch_size = 100
no_epochs = 30
learning_rate = 0.001
no_classes = 2
validation_split = 0.2
verbosity = 1
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', padding='same'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu', padding='same'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu', padding='same'))
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
# Fit data to model
i=0 #validation_data=(X_test, y_test),
X_train = np.array(X_train)
y_train = np.array(y_train)
print("X_train:\t")
print(X_train.shape)
print("y_train:\t")
print(y_train.shape)
history = model.fit(X_train,y_train,
batch_size=batch_size,
epochs=no_epochs,
verbose=verbosity)
ValueError:layersequential_12 的输入 0 与 layer 不兼容::预期 min_ndim=4,发现 ndim=3。收到的完整形状:(无,2505,10)。
任何帮助将不胜感激。
【问题讨论】:
标签: python pandas tensorflow keras neural-network