CNN的标签重塑

时间:2018-05-08 22:26:26

标签: python-3.x numpy keras convolutional-neural-network

我在重塑数据以适应卷积神经网络时遇到问题。我尝试了很多解决方案,但仍然无法做到这一点。数据集包含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)))

是否有成功重塑变量以训练模型?谢谢!

2 个答案:

答案 0 :(得分:0)

Convolution1D需要输入表格

(samples, steps, input_dim)

现在你正在传递

(samples,input_dim)

您需要根据排列800行的时间步长重新整形数据。

例如,如果800行是10个步骤的80个样本,如第一个样本的10个步骤,接着是另一个10个步骤......
那么你需要重塑为(80,10,270)

答案 1 :(得分:0)

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