【发布时间】:2018-10-04 21:59:37
【问题描述】:
我正在使用 CNN 解决分类问题。我有 data.csv 文件(15000 个样本/行和 271 列),其中第一列是类标签(总共 4 个类),其他 270 列是特征(连接长度为 45 的 6 个不同信号,即 6X45=270)。
问题:
我想提供长度为 270 的单个样本作为向量(6 X 45,所有 6 个信号都有不同的含义),但是当在卷积中将单个样本重新整形为(6 行,45 列)时,我的尺寸会出现错误。
我的 CNN 模型:
X, y = load_data()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
num_classes = 4
X_train = X_train.reshape(X_train.shape[0], 6, 45).astype('float32')
X_test = X_test.reshape(X_test.shape[0], 6, 45).astype('float32')
model = Sequential()
model.add(Conv1D(filters=32, kernel_size=5, input_shape=(6, 45)))
model.add(MaxPooling1D(pool_size=5 ))
model.add(Flatten())
model.add(Dense(1000, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))
如何重塑 CNN 将每个样本视为 6 个长度为 45 的信号并与窗口 5 的内核卷积的数据。
【问题讨论】:
-
错误是什么?
-
默认情况下,keras 最后使用通道,所以如果长度=45 和信号=6,我建议使用
input_shape=(45,6)。为此,您可能需要np.swapaxes(X_train,1,2)在不更改数据顺序的情况下反转维度。 -
原始错误:“对于输入形状为 [?,2,1,6] 的 max_pooling1d_2/MaxPool,从 2 中减去 5 导致的负尺寸尺寸:[?,2,1,6]”在反转尺寸后出现同样的错误
np.swapaxes(X_train,1,2)跨度> -
那正是我的评论,以及下面的答案。
标签: python deep-learning keras conv-neural-network