網絡訓練報錯RuntimeError:size mismatch, m1: [256 x 1600], m2: [1024 x 256]的解決辦法

最近在用fashionMNIST跑一個網絡,結果如下圖

想要看看用同一個網絡,不同數據集之間對準確率差別,因此我把數據集換成了cifar10.除了要用到transforms.Grayscale(1)

test_dataset = CIFAR10('../data/CIFAR10', train=False, download=True, transform=transforms.Compose([
    transforms.Grayscale(1),
    transforms.ToTensor(),
    transforms.Normalize((mean,),(std,))
]))

將3通道的彩色圖片轉成單通道圖片外,還報了一個錯誤:

RuntimeError:size mismatch, m1: [256 x 1600], m2: [1024 x 256]

經過排查代碼後發現是由於在全連接層時矩陣維度大小不匹配造成的,將維度64*4*4修改成1600:

最後是cifar10經過20個epoch訓練的結果,準確率並沒有fashionMNIST高。猜測或許是因爲cifar10數據量沒有fashionMNIST大,還有一部分原因是因爲cifar10有些數據本身難以識別,數據集的質量不高,因此需要通過一些技巧去提高準確率。如果有更加合理的解釋,歡迎評論多多指教~~

fashionMNIST訓練集包含 60000 個樣例,測試集包 含 10000 個樣例,分爲 10 類,每一類的樣本訓練樣本數量和測試樣
本數量相同。樣本都來自日常穿着的衣褲鞋包,每個都是 28×28 的 灰度圖像,其中總共有 10 類標籤,每張圖像都有各自的標籤
CIFAR-10 數據集是一個接近普適物體的彩色圖像數據集,該數 據集共有 60000 張彩色圖像,其中有 50000 張訓練圖片和 10000 張 測試圖片,圖片尺寸爲 32*32,分爲 10 個類,每類 6000 張圖片。)
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章