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