簡體   English   中英

CNN模型的損失收斂性和准確性差

[英]Poor loss convergence and accuracy with CNN model

我使用TF構建了一個二進制分類器,該分類器將16x16灰度圖像分類為兩個類別為87-13的類別之一。 我遇到的問題是模型的對數損失收斂到〜0.4 ,這比隨機數要好,但是我無法得到改善。

視覺問題在視頻編碼領域, 此圖像應為該問題提供一些理解,在此問題上應根據圖像的同質性將圖像分割為(0/1)。 注意,邊緣附近的正方形更有可能細分為較小的正方形。

驗證模型(1.1e7示例,87-13分布)時,我無法獲得高於〜50 F1分數

我的訓練數據包含2.2e8個示例,這些示例被過采樣/欠采樣以實現50-50的分布。 我正在使用批量大小為1024的大量混洗緩沖區(不按順序對數據進行排序)。 使用Adam優化,並帶有默認超參數。

我試圖提高性能的事情(測試(結果)):

  • 更大的網絡,不斷變化的層數,激活,卷積內核大小和步幅等(收斂程度相同)
  • 密集層之間的丟失(與大網相同的性能,小網的較差性能)
  • 其他亞當超參數(最終都導致相同的收斂)
  • 其他優化程序(與上述相同)
  • 使用非常小的數據集進行訓練以測試收斂(損耗飽和到0)
  • 正則化輸入(無效)
  • 批量大小變化(僅會影響損耗和收斂時間中的噪聲)

我一直在努力提高性能,我一直在努力,我想我已經閱讀了所有可以找到的SO問題。 任何建議將是一個很大的幫助。

def cnn_model(features, labels, mode):
#   downsample to 8x8 using 2x2 local averaging
    features_8x8 = tf.nn.avg_pool(
            value=tf.cast(features["x"], tf.float32),
            ksize=[1, 2, 2, 1],
            strides=[1, 2, 2, 1],
            padding="SAME",
            data_format='NHWC'
            )
    conv2d_0 = tf.layers.conv2d(inputs=features_8x8,
                                filters=6,
                                kernel_size=[3, 3],
                                strides=(1, 1),
                                activation=tf.nn.relu,
                                name="conv2d_0")
    pool0 = tf.layers.max_pooling2d(
            inputs=conv2d_0,
            pool_size=(2, 2),
            strides=(2, 2),
            padding="SAME",
            data_format='channels_last'
            )
    conv2d_1 = tf.layers.conv2d(inputs=pool0,
                                filters=16,
                                kernel_size=[3, 3],
                                strides=(3, 3),
                                activation=tf.nn.relu,
                                name="conv2d_1")
    reshape1 = tf.reshape(conv2d_1, [-1, 16])
    dense0 = tf.layers.dense(inputs=reshape1,
                             units=10,
                             activation=tf.nn.relu,
                             name="dense0")
    logits = tf.layers.dense(inputs=dense0,
                             units=1,
                             name="logits")

    # ########################################################

    predictions = {
            "classes": tf.round(tf.nn.sigmoid(logits)),
            "probabilities": tf.nn.sigmoid(logits)
            }

    # ########################################################

    if mode == tf.estimator.ModeKeys.PREDICT:
        return tf.estimator.EstimatorSpec(mode=mode,
                                          predictions=predictions)

    # ########################################################

    cross_entropy = tf.nn.sigmoid_cross_entropy_with_logits(
            labels=tf.cast(labels['y'], tf.float32),
            logits=logits
            )

    loss = tf.reduce_mean(cross_entropy)

    # ########################################################

    # Configure the Training Op (for TRAIN mdoe)
    if mode == tf.estimator.ModeKeys.TRAIN:
        optimiser = tf.train.AdamOptimizer(learning_rate=0.001,
                                           beta1=0.9,
                                           beta2=0.999,
                                           epsilon=1e-08)
        train_op = optimiser.minimize(
                loss=loss,
                global_step=tf.train.get_global_step())
        return tf.estimator.EstimatorSpec(mode=mode,
                                          loss=loss,
                                          train_op=train_op)
    # Add evalutation metrics (for EVAL mode)
    eval_metric_ops = {
            "accuracy": tf.metrics.accuracy(
                    labels=labels["y"],
                    predictions=predictions["classes"]),
            }
    return tf.estimator.EstimatorSpec(mode=mode,
                                      loss=loss,
                                      eval_metric_ops=eval_metric_ops)

看來您已經做了很多事情。 我的下一步是可視化

  • 數據集:人類可以區分類別嗎?
  • 權重:他們在訓練過程中是否收斂/變化
  • VGG等經過微調的模型如何工作?

您可能正在要求一個非常困難的視力問題。 我們可以查看圖像或獲取數據樣本嗎? 然后,有經驗的人可以嘗試提出一個(希望)可以運行的基本模型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM