Pytorch垃圾分類搭建CNN模型中遇到的坑

背景就是利用pytorch進行圖形分類處理,採用的是cnn算法,在使用過程中碰到了一些小麻煩。

1、在對圖片進行壓縮時的報錯,報錯形式爲:

raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width))  ValueError

解決辦法:添加transform.Resize((256,256))

train_transforms = transforms.Compose([
    transforms.Resize((256, 256)),#添加補充
    transforms.RandomCrop(96),
    transforms.RandomHorizontalFlip(),
    transforms.ToTensor(),
    transforms.Normalize(mean=mean, std=stdv),
])

2、在利用交叉熵nn.CrossEntropyLoss()進行target與output進行計算時報錯,報錯形式爲:

Target 212 is out of bounds

解決辦法:num_classes與你的分類結果不一致導致的。需要將num_classes調整爲分類結果(從0開始計算);此外,需要注意的是整體的取值。以我的分類爲例,共214個分類,但其實中間有些是沒分類數的,所以統計出來共210個分類,這個地方也卡了好久,具體爲什麼要將num_classes修改爲214,還望知情者相告。

     self.out = nn.Linear(32 * 24 * 24, 214)   # fully connected layer, output 214 classes

以上是我在做圖形分類時困惱了一段時間的問題,希望能對在學習pytorch過程中的你們有所幫助,儘量少走彎路。

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