提高CNN模型精度

时间:2021-03-08 19:27:41

标签: tensorflow conv-neural-network

我们有一些有效的训练和测试数据作为作业 CNN1D 创建,并将结果与​​另一个模型进行比较以获得考试分数 我尝试过这个模型,但是我得到了 84.18 的准确度,而竞争对手模型的准确度是 84.58。我的同学也得到了和我一样的模型,他们可以改进它以获得 85.20% 的准确率。我只是被授权更改超参数或在 fusion = concate()

之后添加/修改/删除一些层 v

谁能帮我改进一下

def CNN1D ()
    n_filters=256,
    dropout_rate = 0.4
    conv1 = Conv1D(filters=n_filters, kernel_size=3, padding='valid', name="conv1_", activation="relu")
    Dropout1 = Dropout(rate=dropout_rate, name="dropOut1_")
    conv2 = Conv1D(filters=n_filters, kernel_size=3, padding='valid', name="conv2_", activation="relu")
    Dropout2 = Dropout(rate=dropout_rate, name="dropOut2_")
    conv3 = Conv1D(filters=n_filters*2, kernel_size=3, padding='valid', name="conv3_", activation="relu")
    Dropout3 = Dropout(rate=dropout_rate, name="dropOut3_")
    conv4 = Conv1D(filters=n_filters*2, kernel_size=1, padding='valid', name="conv4_", activation="relu")
    Dropout4 = Dropout(rate=dropout_rate,name="dropOut4_")
    globPool = GlobalAveragePooling1D()

    def TwoBranchModel():
    num_units=256

      branch1 = CNN1D()
      branch2 = CNN1D() 
      fusion = concate()
      out = tf.keras.Sequential([
                Dense(num_units,activation='relu'),
                BatchNormalization(),
                Dense(n_classes,activation='softmax')
        ])

1 个答案:

答案 0 :(得分:0)

我建议您尝试玩以下游戏

  1. 降低辍学率
  2. 尝试使用 BatchNormalisation 超参数。请参阅此处:https://keras.io/api/layers/normalization_layers/batch_normalization/ 并调整动量。还要去掉 BN 层,看看准确率。

我不确定您是否可以更改以下内容(根据您的限制)

  1. 将 globalpoolaverage 更改为 maxpool

  2. 您的过滤器大小似乎是恒定的,如果开始增加过滤器的数量是个好主意。例如以 32、64、128 等开头..

  3. 移除一些 dropout 层。

相关问题