0

我在重塑数据以适应卷积神经网络时遇到问题。我尝试了很多解决方案,但仍然无法做到这一点。数据集包含 800 行和 271 列(最后一列包含类标签)。共有9个班。以下是我的代码:

 dataset = pd.read_csv('train.csv')

 X = dataset.iloc[:, 0:270].values
 y = dataset.iloc[:, 270].values

 print("X Shape: "+str(X.shape))  ---> (804, 270)

 *** Reshaping Variables here

 X_train, X_test, y_train, y_test = train_test_split(X_reshaped, Y_reshaped, test_size = 0.20)

 model = Sequential()
 model.add(Convolution1D(64, kernel_size=(10), input_shape=(X_train.shape[1],X_train.shape[2])))
 model.add(Activation('relu'))
 model.add(MaxPooling1D(3))
 model.add(Flatten())
 model.add(Dense(100))
 model.add(Dropout(0.5))
 model.add(Dense(9))
 model.add(Activation('softmax'))
 model.compile(loss='sparse_categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
 model.fit(X_train,y_train,validation_data=(X_test,y_test))
 print(str(model.evaluate(x_test,y_test)))

反正有没有成功重塑变量来训练模型?谢谢!

4

2 回答 2

0

Convolutional1D 用于处理时间数据,您似乎没有。您需要将数据拆分为样本数和时间步长

于 2018-05-09T03:39:27.760 回答
0

Convolution1D 需要以下形式的输入

(samples, steps, input_dim)

现在你正在路过

(samples,input_dim)

您需要根据您在 800 行中安排时间步长的方式来重塑数据。

例如,如果 800 行是 10 个时间步长的 80 个样本,例如第一个样本的 10 个时间步长,然后是另一个样本的 10 个时间步长……
那么您需要重塑为 (80,10,270)

于 2018-05-08T23:59:25.563 回答