簡體   English   中英

神經網絡為數據集中的每個示例預測相同的答案序列

[英]Neural Network predicts same sequence of answers for every example in dataset

在此先感謝您的幫助。 我的問題如下:我有圖像數據集,我正在嘗試預測該數據集中圖像的屬性。 它是多標簽分類,意味着一張圖像可以具有多個屬性。 如果我在數據集中計算所有這些屬性並將它們的數量按降序排列,我將得到以下序列(我在這里只放了前 10 個值): [594, 41, 234, 58, 410, 47, 616, 231, 278, 477]其中數字表示相應的屬性。 由於損失 function 我正在使用binary_cross_entropy_with_logits問題是,經過少量時間損失急劇下降,所以它似乎是經過訓練的,但是當我查看網絡預測的 logits 使用

torch.topk(property_logits[:10], k=10)

我得到以下信息:

torch.return_types.topk(
values=tensor([[-3.1373, -3.1558, -3.3370, -3.4383, -3.6139, -3.6574, -4.0421, -4.0930, 4.1260, -4.1534],
        [-2.8343, -2.9064, -3.0966, -3.1550, -3.3528, -3.3624, -3.7855, -3.8403,-3.8690, -3.9195],
        [-2.9859, -3.0170, -3.2494, -3.3170, -3.4875, -3.5206, -3.9383, -3.9951, -4.0376, -4.0742],
        [-2.8249, -2.8296, -2.9950, -3.0566, -3.2388, -3.2454, -3.7068, -3.7439, -3.7702, -3.8347],
        [-3.0599, -3.1202, -3.3430, -3.4330, -3.6226, -3.6342, -4.1087, -4.1403, -4.1948, -4.2462],
        [-2.9096, -2.9212, -3.0136, -3.0498, -3.2810, -3.3346, -3.6669, -3.7131,  -3.7174, -3.7790],
        [-2.8381, -2.9388, -3.2149, -3.2657, -3.4252, -3.4790, -3.9891, -4.0117, -4.0768, -4.1491],
        [-2.8207, -2.8712, -3.1752, -3.2148, -3.3849, -3.3923, -3.8807, -3.9231, -3.9844, -4.0404],
        [-2.4821, -2.7968, -2.9032, -3.2681, -3.3561, -3.6469, -3.6578, -3.7010,  -3.9183, -4.0160],
        [-2.5708, -2.8196, -3.0798, -3.3211, -3.5090, -3.7856, -3.8019, -3.8113, -4.0176, -4.1625]],
        device='cuda:0', grad_fn=<TopkBackward>),
indices=tensor([[594,  41, 234,  58, 410,  47, 616, 231, 278, 477],
        [594,  41, 234,  58, 410,  47, 616, 231, 278, 477],
        [594,  41, 234,  58, 410,  47, 616, 231, 278, 477],
        [594,  41, 234,  58, 410,  47, 616, 231, 278, 477],
        [594,  41, 234,  58,  47, 410, 616, 231, 278, 477],
        [ 41, 594, 234,  58, 410,  47, 616, 231, 278, 477],
        [594,  41, 234,  58,  47, 410, 616, 231, 278, 477],
        [594,  41, 234,  58,  47, 410, 616, 231, 278, 477],
        [234, 594,  58,  47,  41, 278, 410, 231, 477, 616],
        [234, 594,  58,  47,  41, 278, 410, 231, 477, 616]], device='cuda:0'))

所以它有兩個問題:第一個顯然是幾乎所有地方的索引都具有相同的順序,第二個問題是所有地方的值都是負數。 在訓練期間,我保證給予損失 function 的訓練樣本是正確的。 但這可能是關於我的數據稀疏性的問題,因為有 600 多個不同的屬性,只有 50% 的數據集具有至少一個屬性,並且只有 15% 多於 2 個屬性。 所以我期待有很多帶有“空白”(索引 0)屬性的預測,但實際上我沒有。

我真的不知道如何調試這個東西。 我試圖在這 600 多個屬性上只擁有其中的 3 個,我經歷了同樣的故事,到處都是相同的順序,只有負值。

您在預測期間的測試樣本是否遵循與訓練樣本相同的預處理步驟(例如:兩個樣本都歸一化)? 這可能是您的問題的原因之一。

暫無
暫無

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

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