关于深度学习代码中一些疑惑的总结

Posted 是一个小迷糊吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于深度学习代码中一些疑惑的总结相关的知识,希望对你有一定的参考价值。

1、GoogLeNet

1)1x1卷积核的作用:

1x1卷积的主要目的是为了减少维度,还用于修正线性激活(ReLU),
栗子:上一层的输出为上一层的输出为100x100x128,经过具有256个通道的5x5卷积层之后(stride=1,pad=2),
输出数据为100x100x256,其中,卷积层的参数为128x5x5x256= 819200。
若上一层输出先经过具有32个通道的1x1卷积层, 再经过具有256个输出的5x5卷积层,那么输出数据仍为为100x100x256,
但卷积参数量已经减少为128x1x1x32 + 32x5x5x256= 204800,
大约减少了4倍。

在上图中没有加入1x1卷积核,若输入的通道数为192,从左至右在第一个卷积里面输出通道数为64,第二个为128,第三个为32,则有参数:
(1x1x192x64)+(3x3x192x128)+(5x5x192x32)=387072
最终输出的特征图为:64+128+32+192=416

在上图中,若加入了1x1的卷积核,
则有:
参数:(1x1x192x64)+(1x1x192x96+3x3x96x128)+(1x1x192x16+5x5x16x32)=157184
最终输出的特征图:64+128+32+32=256

2)Python中的*args和**kwargs的使用方式

args是arguments的缩写,表示位置参数
kwargs是keyword arguments的缩写,表示关键字参数
以上是Python中可变参数的两种形式,并且args必须放在**kwargs的前面,因为位置参数在关键字参数的前面。
args可以理解为变元的缩写,
**kwargs理解为关键字变元的缩写
各参数用于解压各自的变元类型,允许使用可变字长变元进行函数调用。
“args”是一个标准化规范,但仍然只是一个名称。在
args中,唯一的星号是真正的参与者,创建了列表,其内容则是来自函数调用的位置参数
“**kwargs”是双星号创建了字典,其内容是关键字参数,来自函数调用。
使用
args和**kwargs时,需要注意位置参数和关键字参数。
**kwargs不能置于*args前,不然会报错

以上是关于关于深度学习代码中一些疑惑的总结的主要内容,如果未能解决你的问题,请参考以下文章

文件路径中双星 (**) 的含义

201671010139 徐楠 关于学习方面的一些疑惑

关于学习C#泛型委托过程中发现的一些疑惑,大家一起讨论下

卷积神经网络实战经验总结

深度学习中对各模块总结

深度学习中对各模块总结