请求对我的 CNN 学习模型提出改进建议?

Request for improvement suggestion on my CNN learning model?

我正在尝试为生产线建立分类模型。如果我没理解错的话,可以用CNN对数值数据进行分类。(而且不仅是图片)

我的数据是每行 21 列的数组: 20 种不同的测量值,最后一列是类型。它可以是 0 或 1 或 2 数组的每一行都使用时间戳作为索引

类型 0 代表 80% 的产量,不需要额外处理 但是类型 1 和类型 2 在生产后需要额外处理(所以我需要清楚地识别它们

为了重新创建 CNN 可以使用的东西,我创建了一个数据集,其中每个标签都有一个用于学习数据的数组,该数组由自其位置以来的最后 20 行组成。
因此每个标签都有对应的学习数据,一个 20x20 测量值的方形阵列(如图片)。 (数据已经使用 keras ColumnTransformer

标准化

阅读不平衡数据集后,我决定每次发现类型 1 或类型 2 时只包含类型 0。最后我的数据集大小是 18 000 行,数据形状'(18206, 20, 20)'

我的学习模型非常基础,看起来像这样:

        train, test, train_label, test_label = train_test_split(X,y,test_size=0.3,shuffle=True)
        ##Call CNN model
        sizePic = 20
        model = Sequential()
        model.add(Dense(sizePic*3, input_shape=(sizePic,sizePic,), activation='relu'))
        model.add(Dense(sizePic, activation='relu'))
        model.add(Flatten())
        model.add(Dense(3, activation='softmax'))
        # Compile model
        sgd = optimizers.SGD(lr=0.03)
        model.compile(loss='sparse_categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
        self.logger.info(model.summary())

        # Fit the model
        model.fit(train, train_label, epochs=750, batch_size=200,verbose=1)
        # evaluate the model
        self.learning_scores = model.evaluate(test, test_label, verbose=2)
        self.logger.info("scores %r"%self.learning_scores)

最后的预测分数是:

分数 [0.6088506683505354, 0.7341632843017578]

我一直在更改 batch_size 和学习率等参数,但没有大的改进。据我了解,以这种方式开始比向模型添加层要好,对吗? 有什么建议吗?? 谢谢你的时间

你没有使用任何转换层,只使用全连接层(不要害怕添加一些转换层,因为它们的参数比密集层少得多)