学习的杂记

# 建立抽象模型
x = tf.placeholder(tf.float32, [None, 784]) # 输入占位符
y = tf.placeholder(tf.float32, [None, 10])  # 输出占位符(预期输出)
W = tf.Variable(tf.zeros([784, 10]))        #784维的10个数字的数组
b = tf.Variable(tf.zeros([10]))             #1  维的10个数字的数组
a = tf.nn.softmax(tf.matmul(x, W) + b)      # a表示模型的实际输出

# 定义损失函数和训练方法
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y * tf.log(a), reduction_indices=[1])) # 损失函数为交叉熵
optimizer = tf.train.GradientDescentOptimizer(0.5) # 梯度下降法,学习速率为0.5
train = optimizer.minimize(cross_entropy)  # 训练目标:最小化损失函数

resnet

y=F(x)+x

其设计的目的是解决深度网络的退化问题。在不知道多深的网络比较合适的情况下,按照现有研究,增加深度对于模型学习是有帮助的,所以需要加很深,但是太深就会有退化。解决办法是让多余的层变为恒等映射。直接让一些层去拟合一个潜在的恒等映射函数H(x) = x,比较困难,这可能就是深层网络难以训练的原因。但是,如果把网络设计为H(x) = F(x) + x,可以转换为学习一个残差函数F(x) = H(x) - x. 只要F(x)=0,就构成了一个恒等映射H(x) = x。因此,可以说是在学习残差。简单来说,在进行恒等映射的回收,学习残差比学习原来的映射函数要简单。

GoogleNet  V4

每个Inception module最后都使用了一个1x1的卷积(linear activation),作用是保证identity部分和Inception部分输出特征维度相同,这样才能保证两部分特征能够相加。

同时多一层1*1可以增加非线性特征。

DenseNet

1.通过跨层连接(across layers),就是所有block前前后后全部连接在一起

2.1*1降维

一个DenseBlock有五层dense,前面在输入时有一个bottleneck层,因为DenseNet每一层都和前面所有层相连,concat会产生很多参数,因此需要通过1*1卷积降维减少输入参数,减少计算量,前四层之间进行BN-RELU-CONV,最后一层是transition layer,也是为了减少输出结果和前面各层concat后产生一个巨量的参数,

1*1卷积主要目的是用来降维(减少channels)

比如输入时候为(256*256*64),channels为64,可选择输出32个channels,(256*256*32)

而池化层的降维是(256*256*64),pool或者conv步幅stride为2,输出的是(128*128*64),降低的是尺寸。

所以卷积降维是减少channel,池化降维是减少尺寸

拉普拉斯矩阵L
L = D − A L=D-A
L=D−A

其中,L为Laplacian矩阵;
      D是顶点的度矩阵(对角矩阵),对角线上的元素依次为各个顶点的度(与该顶点相连的边的条数);
      A是图的邻接矩阵。

池化层就是采样层。

池化和下采样的关系

下采样和池化应该是包含关系,池化属于下采样,而下采样不局限于池化,如果卷积 stride=2,此时也可以把这种卷积叫做下采样。池化层中进行的操作是下采样。

所以如果卷积层中stride=2,也是在卷积层中的下采样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值