我在重塑数据以适应卷积神经网络时遇到问题。我尝试了很多解决方案,但仍然无法做到这一点。数据集包含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)))
是否有成功重塑变量以训练模型?谢谢!
答案 0 :(得分:0)
Convolution1D需要输入表格
(samples, steps, input_dim)
现在你正在传递
(samples,input_dim)
您需要根据排列800行的时间步长重新整形数据。
例如,如果800行是10个步骤的80个样本,如第一个样本的10个步骤,接着是另一个10个步骤......
那么你需要重塑为(80,10,270)
答案 1 :(得分:0)
Convolutional1D用于处理时态数据,但您似乎没有。您需要将数据拆分为样本数和时间步长