卷积神经网络(LeNet) 讨论区


#1

http://zh.diveintodeeplearning.org/chapter_convolutional-neural-networks/lenet.html


#2

网络最后一层的output是一个全连接,在gluon.loss.SoftmaxCrossEntropyLoss()中是先要对output做一次log_softmax的,而在计算正确率的时候为什么不将网络的输出output = net(data)先做一次log_softmax再计算acc而是直接拿output和label计算计算acc呢?


#3

因为计算准确率只需要选出里面最大的,所以做不做log_softmax不影响,因为这是一个单调增函数,所以做完之后相对的大小是不变的,也就是说使用output.argmax这个函数,做不做log_softmax出来的结果都是一样的。


于置顶 #4

#5

一行一行输入到ipython里的,出现错误:

RuntimeError: Parameter sequential0_conv0_weight has not been initialized

定位在第8行的:

trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.5})

什么原因呢?


#6

第二个code block里有初始化逻辑你可能没有跑

ctx = utils.try_gpu()
net.initialize(ctx=ctx)

#7

哦,确实。谢谢!


#8

请教一下,在用gluon定义卷积神经网络时,如何快速确认每一层的输出的size是多少?有像nd里面的直接print方法吗?


#9

可以随机生成一个大小按照真实数据的数组,输入到network里去,这样它返回的ndarray的大小就可以看到了


#10

有个问题啊 mxnet主要针对于深度学习网络,针对于机器学习算法主要还是使用sk-learn,不知道这样理解对不对,我也从网上查了一下,也大概是这个意思 望知情者帮解释一下啊


#11

mxnet也可以做机器学习,只是算法要自己写。


#12

@szha
使用cnn做分类的时候,使用的交叉熵损失函数, 是不是可能和分类的种类太多有关系呢?

我做的那个东西中,要预测的分类结果为100种情况,结果训练的时候loss就一直是nan,精准率也就一直不变化了。


#13

种类多并没有关系,100类也不算多(比如image net有1000类),nan一般是数值稳定性问题,可能出问题的地方有exp的exponent太大了导致inf,或者log的输入为0之类的


#14

那就没必要了吧 还不如使用sklearn呢


#15

请教一下,在卷积函数里面,channels 这个参数选择上面是否有什么特别的要求?
在Gluon 搭建卷积网络的示例里面,一共两个卷积层,第一层的channels是20,第二层的channels是50。
是否可以讲讲,为什么这样子设计啊?


#16

怎么像LeNet中C3指定输出的每一层channel涉及前一层哪几层特征图呢?dropout吗?


#17

我的笔记本电脑corei7 -7700hq显卡gtx1070, 内存16G,跑nin-gluon.md的例子,内存直接满了,就跑不动了,是这个例子要求很高的内存吗?


#18

我的台式机:i5-4590cpu、8G内存,GTX750。跑这个教程,CPU要1min、内存基本100%;GPU跑要20s多,内存只占到30%~40%。


#19

执行这句net.initialize(ctx=mx.gpu(),报错:/home/travis/build/dmlc/mxnet-distro/mxnet-build/dmlc-core/include/dmlc/logging.h:308: /home/travis/build/dmlc/mxnet-distro/mxnet-build/mshadow/mshadow/./stream_gpu-inl.h:115: Check failed: err == CUBLAS_STATUS_SUCCESS (1 vs. 0) Create cublas handle failed是什么原因?


#20

我这边也报了一个类似的错误,是在重新加载模型参数时发生的,将ctx设为cpu则没有问题,不知道你的问题解决了没?