![](/img/trans.png)
[英]Classification of time series of variable lengths using 1D CNN in tensorflow
[英]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.