繁体   English   中英

1D CNN 使用 tensorflow keras 分类问题

[英]1D CNN using tensorflow keras classification problems

我一直在尝试使用 1D CNN 来解决简单的分类问题。 比如在csv中创建一个表格数据,输入到python中做一些简单的分类。 数据的前 31 列是特征,最后一列是条件。 我一直在使用 Lightgbm 和 Randomforest 等其他 ML 方法进行分类。 我想尝试使用1D CNN,看看是否可以提高准确性。

X = raw_data[feature_names]

P = predict_data_raw[feature_names]
P1 = predict_data_raw[feature_names1]

y = raw_data['Conditions']
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=22, test_size=0.1)
 
 model = Sequential()
 model.add(Conv1D(filters=32, kernel_size=3, activation='relu'))
 model.add(LayerNormalization())
 model.add(Conv1D(filters=64, kernel_size=3, activation='relu'))
 model.add(LayerNormalization())
 model.add(GlobalAveragePooling1D())
 model.add(Flatten())
 model.add(Dense(64, activation='relu'))
 model.add(Dense(32, activation='relu'))
 model.add(Dense(2, activation='softmax'))
 model.compile(loss='loss_function', optimizer='adam', metrics=['accuracy'])

我想 output 的预测结果和条件的预测概率。 但是,训练停留在某些点并显示此错误:

ValueError: Exception encountered when calling layer "sequential_26" (type Sequential).

Input 0 of layer "conv1d_33" is incompatible with the layer: expected min_ndim=3, found ndim=2. Full shape received: (None, 31)

Call arguments received by layer "sequential_26" (type Sequential):
  • inputs=tf.Tensor(shape=(None, 31), dtype=float64)
  • training=True
  • mask=None

Conv1D需要3 维输入,而您的输入只是 2 维。 您可以重塑数据或添加Reshape层:

model = Sequential()
model.add(Reshape((31, 1))
...

您可能需要添加一个input_shape

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM