Python 这个CNN怎么会有奇数个参数?

Python 这个CNN怎么会有奇数个参数?,python,tensorflow,keras,Python,Tensorflow,Keras,我计划使用一个三维U形网络,第一步,我遵循切克等人的论文,我在这里复制了网络结构: 据报道,他们使用了19069955个参数。这个数字是奇数(我的意思是,不能被2整除)。我自己的Keras实现非常接近这个数字(例如,当使用2而不是3个输入通道时为19067648个参数,或者当使用2而不是3个目标类时为19068448个参数)。但无论我做什么尝试,我的(可训练的、不可训练的、每一层的总参数)参数的数量仍然是相等的。这个网络怎么会有奇数个参数呢?可能是层间的一些参数,比如批量规范化参数。其中一个层

我计划使用一个三维U形网络,第一步,我遵循切克等人的论文,我在这里复制了网络结构:


据报道,他们使用了19069955个参数。这个数字是奇数(我的意思是,不能被2整除)。我自己的Keras实现非常接近这个数字(例如,当使用2而不是3个输入通道时为19067648个参数,或者当使用2而不是3个目标类时为19068448个参数)。但无论我做什么尝试,我的(可训练的、不可训练的、每一层的总参数)参数的数量仍然是相等的。这个网络怎么会有奇数个参数呢?

可能是层间的一些参数,比如批量规范化参数。其中一个层间片段可能在开始或结束时都不包括。@golmschenk我也这么认为,但Keras BN层有4个参数(2+2或0+4,可训练+不可训练)。首先,我的隐含假设是,输入或输出深度为偶数的层不能有奇数个参数,这是不正确的;我想这只适用于输出深度为偶数的层,但对于输入深度为偶数的层(如果输出深度为奇数的话)则不是这样。事实上,在没有任何批标准化的情况下,最终1x1 conv层具有奇数个参数,即,
195=3*(1*1*64+1)
。我忘记了通过添加
+1
来解释偏差(一如既往)。其次,在批处理规范化之前,我在Conv层中使用
use\u bias=False
时只得到了偶数:在批处理规范化之后计算激活,我的想法是这些偏差是不需要的。好吧,也许是,也许不是,但西切克等人显然没有禁用它们。