从0开始的卷积神经网络 讨论区


#43

那个时候lr改变了吧,训练会从一个地方大幅跳到另外一个地方


#44

Mli 你好, 我思索了一下,您的意思是不是在第一次全迭代的过程中,正好是在一个很平缓向下的坡度上,到了第二次全迭代开始的时候正好越过那个转折点,所以精度上开始一个很大的提升


#45

又出现一个小问题,就是在使用nd.Convolution的时候不是需要填kernel的shape,为什么kernel=w.shape[2:]而不是w.shape[1:]。个人感觉滤波器的通道数也是需要考虑的吧,还是说无论多少通道的图片都是只用单层的滤波器做卷积? :smiley:


#46

本来是label,但是这里不要这个值


#47
W3 = nd.random_normal(shape=(1250, 128), scale=weight_scale, ctx=ctx)

请问这个1250是怎么算的?


#48

我刚刚跟着手工算了一下,

输入数据: shape(256, 1, 28, 28), W1(20, 1, 5, 5)
h1_conv:    shape(256, 20, 28-stride+1, 28-stride+1)=(256, 20, 24, 24)
h1: shape(256,20, 24/stride, 24/stride) = (256, 20, 12, 12), W2(50, 20, 3, 3)
h2_conv: (256, 50, 12 - 3 + 1,12 - 3 + 1)=(256, 50, 10, 10)
h2: (256, 50, 10/2, 10/2) =  (256, 50, 5, 5)
flatten (256, 50*5*5)= (256, 1250)

应该是每次都得自己算一下是吧?


#49

在utils中,DataLoader中的__iter__函数,对dataset处理是

data = self.dataset[:]
X = data[0]
y = nd.array(data[1])

但是,如果写成

X = self.dataset[0]
y = nd.array(self.dataset[1])

就会出错,请问原因在于?


#50

我有个地方想不明白,第一层经过20个channel的卷积后pooling得到(256,20,12,12)应该是20个12x12的小特征图
然后第二次卷积,由50个channel的卷积后为什么不是生成20x50=1000个小特征图(256,1000,5,5)?


#51

难道是50个channel卷积后把之前20个channel求和得到新的channel?


#52

从0开始实在这里改,
使用Gluon实现:


#53

@mli 沐神 好像是出BUG了 net.initialize()
x = nd.random.uniform(shape=(4,3,96,96))
y = net(x)删了这几行代码 是能用GPU 报NotImplementedError这个错误 把代码改成别的也是直接报这个错


#54

还是没搞懂,1250是怎么计算出来的,大神点醒我


#55

的确写错了,你用help(nd.Convolution)查看对应参数就知晓了。
不过就第一个案例写错了。错误写法是w.shape[1]。 后面都是对的。正确写法是w.shape[0]表示num_filters


#56

Refer to @nlpjoe
X.shape= (256, 1, 28, 28), W1=(20, 1, 5, 5)
h1_conv: shape= (256, 20, 28-stride+1, 28-stride+1)=(256, 20, 24, 24), maxPooling=(2,2), stride = (2, 2)
h1 after maxpooling: shape=(256,20, 24/stride, 24/stride) = (256, 20, 12, 12), W2= (50, 20, 3, 3)
h2_conv: (256, 50, 12 - 3 + 1,12 - 3 + 1)=(256, 50, 10, 10), maxPooling=(2,2), stride=(2,2)
h2 after maxpooling: shape= (256, 50, 10/2, 10/2) = (256, 50, 5, 5)
h2 after flatten shape= (256, 5055)= (256, 1250)


#57

可以直接debug,打个断点看,或者print,不用手算


#58

是的,会求和的


#59

谢谢,还有个问题,那每一层通道数的选择有什么原则吗


#60

feeling


#61

新版教程里这一节被拆成了多个小节。关闭这个post


于存档 #62