深度卷积神经网络(AlexNet) 讨论区


#1

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


于置顶 #2

#3

嗯。。为什么AlexNet跑出来是这样呢(我已经稍微调高了一些learning_rate)


感觉哪里不大对呢:disappointed_relieved: 有小伙伴跑过试试么


#4

感觉lr太高


#5

注意到使用Gulon.nn做卷积时,里面的参数名字和使用nd.Convolution()不一样,从kernel_size->kernel,strides->stride,channels->num_filter,请问这样设置有什么讲究么?如果没有的话,是不是可以统一一下比较好?


#6

请问从0开始实现的话,droupout是否有好一点的实现方式?


#7

我们知道在从0开始时可以输入数据到网络中,print输出来查看网络的特征图规模,但在使用gluon设计网络时,如何查看经过卷积过后的每一层的特征size呢?print(net[i].weight)只能查看到卷积的size.


#8

在forward里面print就可以了


#9

不是很懂


#10
class Net(nn.Block):
    def __init__(self):
        super(Net, self).__init__()
        with self.name_scope():
            self.conv1 = nn.Conv2D(32, 3)
            self.conv2 = nn.Conv2D(100, 3)
    def forward(self, x):
        out = nd.relu(self.conv1(x))
        print('layer1 output shape{}'.format(out.shape))
        out = nd.relu(self.conv2(out))
        print('layer2 output shape{}'.format(out.shape))
        return out

net = Net()
net.initialize()
x = nd.random.normal(shape=(1, 3, 32, 32))
y = net(x)

>>layer1 output shape(1, 32, 30, 30)
>>layer2 output shape(1, 100, 28, 28)

#11


如果是这样的设计呢?


#12

这个就打不出来了,你可以改成上面那种设计


#13

好的,谢谢指导


#14
net = nn.Sequential()
with net.name_scope():
    net.add(nn.Dense(10))
    net.add(nn.Dense(20))
    net.add(nn.Dense(30))
net.initialize()
x = nd.random.normal(shape=(10, 100))
out = x
for b in net:
    out = b(out)
    print(out.shape)

好像可以这样


#15

尝试了一下本节的练习:从0开始实现AlexNet,
下面是我的代码,因为没有GPU,没有跑出结果来,但是经过对比,网络应该是没有错的,
另外,没有实现dropout,不知道这个应该怎么写。




使用从0开始的网络的特征:
49

求教如何实现dropout?


#16

试过了,完全可以,非常感谢


#17

各位大佬大家好,我有个疑问。就是在第二阶段卷积过程,输入是96通道,要得到256通道的输出,是不是就需要256个96×5×5的卷积核。问题:1.这96个5×5的filter是否共享参数。 2. 这96个5×5如何得到输出,全部相加?


#18
from mxnet.gluon import nn
import mxnet
from mxnet import init
from mxnet import gluon
import utils

net = nn.Sequential()
with net.name_scope():
    net.add(
        # 第一阶段
        nn.Conv2D(channels=96, kernel_size=11,
                  strides=4, activation='relu'),
        nn.MaxPool2D(pool_size=3, strides=2),
        # 第二阶段
        nn.Conv2D(channels=256, kernel_size=5,
                  padding=2, activation='relu'),
        nn.MaxPool2D(pool_size=3, strides=2),
        # 第三阶段
        nn.Conv2D(channels=384, kernel_size=3,
                  padding=1, activation='relu'),
        nn.Conv2D(channels=384, kernel_size=3,
                  padding=1, activation='relu'),
        nn.Conv2D(channels=256, kernel_size=3,
                  padding=1, activation='relu'),
        nn.MaxPool2D(pool_size=3, strides=2),
        # 第四阶段
        nn.Flatten(),
        nn.Dense(4096, activation="relu"),
        nn.Dropout(.5),
        # 第五阶段
        nn.Dense(4096, activation="relu"),
        nn.Dropout(.5),
        # 第六阶段
        nn.Dense(10)
    )


train_data, test_data = utils.load_data_fashion_mnist(
    batch_size=64, resize=224)


ctx = mxnet.gpu()
net.initialize(ctx=ctx, init=init.Xavier())

loss = gluon.loss.SoftmaxCrossEntropyLoss()
trainer = gluon.Trainer(net.collect_params(),
                        'sgd', {'learning_rate': 0.01})
utils.train(train_data, test_data, net, loss,
            trainer, ctx, num_epochs=1)

在windows下跑 报错了 很迷啊 mxnet版本是0.12.0
Start training on gpu(0)
Traceback (most recent call last):
File “E:/python/minst/alexnetfashionmnist.py”, line 49, in
trainer, ctx, num_epochs=1)
File “E:\python\minst\utils.py”, line 125, in train
for i, batch in enumerate(train_data):
File “E:\python\minst\utils.py”, line 24, in iter
data = self.dataset[:]
File “C:\Python36\lib\site-packages\mxnet\gluon\data\vision.py”, line 58, in getitem
return self._transform(self._data[idx], self._label[idx])
File “E:\python\minst\utils.py”, line 52, in transform_mnist
return nd.transpose(data.astype(‘float32’), (0,3,1,2))/255, label.astype(‘float32’)
File “C:\Python36\lib\site-packages\mxnet\ndarray\ndarray.py”, line 1592, in astype
res = empty(self.shape, ctx=self.context, dtype=dtype)
File “C:\Python36\lib\site-packages\mxnet\ndarray\ndarray.py”, line 3061, in empty
return NDArray(handle=_new_alloc_handle(shape, ctx, False, dtype))
File “C:\Python36\lib\site-packages\mxnet\ndarray\ndarray.py”, line 133, in _new_alloc_handle
ctypes.byref(hdl)))
OSError: [WinError -529697949] Windows Error 0xe06d7363


#19

为什么我运行会报bad_alloc()的错误,难道内存不够?我内存8G,显卡1060 6G


#20

有人遇到在jupyter notebook里面alexnet跑不了么?本来应该是代码段的地方变成了文字