学习的杂记

学习的杂记,第1张

学习的杂记
# 建立抽象模型
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可以增加非线性特征。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5479528.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存