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

我也遇到了这个问题 不知道原因是什么

你解决了吗

learning_rate改小点试试

是的 我也是这么解决的 非常感谢

[06:30:55] c:\jenkins\workspace\mxnet-tag\mxnet\src\imperative./imperative_utils.h:90: GPU support is disabled. Compile MXNet with USE_CUDA=1 to enable GPU support. 这个错误,怎么解决。

请问池化层在反向传播中的链式求导是怎么算的?选取池化区块中的最大值,怎么求导?

本章的开头提到:“对于大尺寸的输入图像,使用全连接层容易导致模型过大。假设输入是高和宽均为1,000像素的彩色照片(含3个通道)。即使全连接层输出个数仍是256,该层权重参数的形状也是3,000,000× 256:它占用了大约3 GB的内存或显存。”
3,000,000× 256不是3MB吗?怎么是3GB?

请问 哪位能指点一二:
1、最后一个池化层(1, 16, 4, 4) 怎么变为 120 的 全连接层 ?
2、全连接层的120 变到 84 和 10 是怎么来的?

3,000,000是3M,还要乘以256个float,float是4个bype。
所以是1024个3M,就是3个G了。

确实,learning_rate改小一点就可以了

请教下大神,最⼤池化层则⽤来降低卷积层对位置的敏感性,这句话该如何理解

书上的例子指出,添加最大池化层进行边缘检测使得原本输出中不会被判定为边缘(即Y[i][j]==0)的位置也可能会成为边缘,因而就是降低了敏感度,通俗地说,就是使用单一的二维卷积层判定得松一些。

书上说到,第二个卷积层相较于第一个卷积层,输出通道数由6提升到了16,其目的是为了使得两个卷积层的参数尺寸类似。但通过输出两个卷积层的参数形状,发现这项改动反而使得第二个卷积层的参数比第一个卷积层大很多,由(6,1,5,5)到(16,6,5,5)。该怎么理解书上的说法呢?

我觉得这里的“卷积层的参数尺寸”,指的是卷积层的形状,这个形状可以用(批量大小,通道,高,宽)来表示,而并不是你上述所说的bias、weight等参数的尺寸。

已经安装了cuda10.2, cudnn 7.6.5,在运行最后的训练代码时,出现错误,
MXNetError Traceback (most recent call last)
in
4 net.initialize(force_reinit=True, ctx=ctx, init=init.Xavier())
5 trainer = gluon.Trainer(net.collect_params(), ‘sgd’, {‘learning_rate’: lr})
----> 6 train_ch5(net, train_iter, test_iter, batch_size, trainer, ctx, num_epochs)

in train_ch5(net, train_iter, test_iter, batch_size, trainer, ctx, num_epochs)
14 trainer.step(batch_size)
15 y = y.astype(‘float32’)
—> 16 train_l_sum += l.asscalar()
17 train_acc_sum += (y_hat.argmax(axis=1) == y).sum().asscalar()
18 n += y.size

d:\software\anaconda\anaconda\envs\gluon\lib\site-packages\mxnet\ndarray\ndarray.py in asscalar(self)
1892 if self.shape != (1,):
1893 raise ValueError(“The current array is not a scalar”)
-> 1894 return self.asnumpy()[0]
1895
1896 def astype(self, dtype, copy=True):

d:\software\anaconda\anaconda\envs\gluon\lib\site-packages\mxnet\ndarray\ndarray.py in asnumpy(self)
1874 self.handle,
1875 data.ctypes.data_as(ctypes.c_void_p),
-> 1876 ctypes.c_size_t(data.size)))
1877 return data
1878

d:\software\anaconda\anaconda\envs\gluon\lib\site-packages\mxnet\base.py in check_call(ret)
147 “”"
148 if ret != 0:
–> 149 raise MXNetError(py_str(_LIB.MXGetLastError()))
150
151

MXNetError: [13:53:53] c:\ci\libmxnet_1533399150922\work\src\operator\nn./cudnn/cudnn_activation-inl.h:129: Check failed: e == CUDNN_STATUS_SUCCESS (8 vs. 0) cuDNN: CUDNN_STATUS_EXECUTION_FAILED
如果用CPU训练,则不会出现此问题,有人知道怎么解决吗?十分感谢!

本章开头说到:即使全连接层输出个数仍是256,该层权重参数的形状也是3,000,000×2563,000,000×256:它占用了大约3 GB的内存或显存。
请问这是如何计算出来的?

关于这章里面的一段代码:

for X, y in data_iter:
X, y = X.as_in_context(ctx), y.as_in_context(ctx).astype(‘float32’)

为什么不直接把data_iter放在gpu里面,而是而是一点一点地搬到gpu里面呢?