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过程中的你们有所帮助,尽量少走弯路。

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