【问题标题】:improve CNN model accuracy提高 CNN 模型精度
【发布时间】:2021-03-08 19:27:41
【问题描述】:

我们有一些训练有效数据和测试数据作为作业 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')
        ])

【问题讨论】:

    标签: tensorflow conv-neural-network


    【解决方案1】:

    我建议你尝试玩以下游戏

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

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

    1. 将 globalpoolaverage 更改为 maxpool

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

    3. 移除一些 dropout 层。

    【讨论】:

      猜你喜欢
      • 2020-06-15
      • 2019-06-11
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2020-08-06
      • 2020-01-29
      相关资源
      最近更新 更多