1.全连接网络
python:
nn.Linear(in, out)
matlab:
layer = fullyConnectedLayer(outputSize)
layer = fullyConnectedLayer(outputSize,Name,Value)
2.add和concat的区别
concat作用
concat是通道数的增加,也就是说描述图像本身的特征数(通道数)增加了,而每一特征下的信息是没有增加;横向或纵向空间上的叠加。
add作用
add为简单的像素叠加,是描述图像的特征下的信息量增多了,但是描述图像的维度本身并没有增加,只是每一维下的信息量在增加,这显然是对最终的图像的分类是有益的。
add操作经典代表网络是ResNet,concate操作经典代表网络是Inception系统网络中的Inception结构和DenseNet。
add操作相当于加入一种先验知识。我觉得也就是相当于你对原始特征进行人为的特征融合。而你选择的特征处理的操作是element-wise add。通过add操作,会得到新的特征,这个新的特征可以反映原始特征的一些特性,但是原始特征的一些信息也会在这个过程中损失。
但是concate就是将原始特征直接拼接,让网络去学习,应该如何融合特征,这个过程中信息不会损失。
add其实是concate的一种特殊情况。但是concate带来的计算量较大,在明确原始特征的关系可以使用add操作融合的话,使用add操作可以节省计算代价
直接上例子
import torch
a=torch.tensor([[1,2],[3,4]])
b=torch.tensor([[7,8],[9,10]])
c=torch.cat((a,b),0)
print(c)
d=torch.add(a,b)
print(d)
运行结果如下
#concat运行结果
tensor([[ 1, 2],
[ 3, 4],
[ 7, 8],
[ 9, 10]])
#add的运行结果
tensor([[ 8, 10],
[12, 14]])