基于水果分类器cnn深度学习的环境调试(1)

第一步 安装该工程的各种依赖库
1)conda环境中安装OpenCV
在conda环境中通过下面的命令一键式安装OpenCV
conda install -c menpo opencv
conda install scikit-learn
2)dataset下载(fruit-360)
https://www.kaggle.com/moltean/fruits/version/44

3)training文件夹的去空格整理
https://www.v2ex.com/t/338851
在这里插入图片描述


python load_dataset.py --dataset /Users/apple/Desktop/Workspace/fruit-classification-pytorch-master/fruits-360

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
问题1、
Trying to backward through the graph a second time, but the buffers have already been freed. Specify retain_graph=True when calling backward the first time.
知识点:backward(gradient=None, retain_variables=False)
该问题是指在默认情况下,网络在反向传播中不允许多个backward()。需要在第一个backward设置
retain_variables=True
一般情况下,嵌套gan网络会出现三个loss需要反馈。建议交替更新D网络和G网络。

问题2、
Assertion `cur_target >= 0 && cur_target < n_classes’ failed. at /pytorch/torch/lib/THNN/generic/ClassNLLCriterion.c:62
该问题是指output的种类多余target。
检查model里最后种类输出个数。

问题3、
类似于is_same_size received an invalid combination of arguments - got (torch.FloatTensor), but expected (torch.cuda.FloatTensor other)的问题。
该问题是指没有统一是否使用GPU。
由于Tensor、Net类很多,所以一定要规划好是否添加cuda(),如果有cuda,确认是否使用async=True(该处作用是http://blog.csdn.net/amds123/article/details/70144995)。建议代码保持整齐,方便检查。此外在Variable中常用:
requires_grad=True 需要更新
volatile=True 不需要更新
这两个参数都是为了提高反向传播的效率,排除子图(即不必要更新的变量)。两者都是有一个标记为True,那么输出的变量的为True,两者都是False,输出的变量才是False。volatile=True相当于requires_grad=False。

问题4、
nn criterions don’t compute the gradient w.r.t. targets - please mark these variables as volatile or not requiring gradients
该问题是指计算criterion的两个变量的形状不一样大小。
再次提示,由于应用他人的代码,尤其是model部分,注意修改。根据自己的需求相应删减或增加卷积层,对应好接口。

1
断言函数报错,要求目标类大于等于0并且小于等于输入的类别,但是不满足。
在分类训练中经常遇到这个问题,一般来说在我们网络中输出的种类数和你label设置的种类数量不同的时候就会出现这个错误。

7 Assertion `cur_target >= 0 && cur_target < n_classes’ failed.

我们在分类训练中经常遇到这个问题,一般来说在我们网络中输出的种类数和你label设置的种类数量不同的时候就会出现这个错误。

但是,Pytorch有个要求,在使用CrossEntropyLoss这个函数进行验证时label必须是以0开始的:

假如我这样:

self.classes = [0, 1, 2, 3]
我的种类有四类,分别是0.1.2.3,这样就没有什么问题,但是如果我写成:

self.classes = [1, 2, 3, 4]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值