学习笔记 TF014:卷积层、激活函数、池化层、归一化层、高级层 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cralison
V2EX    TensorFlow

学习笔记 TF014:卷积层、激活函数、池化层、归一化层、高级层

  •  1
     
  •   cralison 2017-05-25 01:24:06 +08:00 4640 次点击
    这是一个创建于 3061 天前的主题,其中的信息可能已经有所发展或是发生改变。

    CNN 神经网络架构至少包含一个卷积层 (tf.nn.conv2d)。单层 CNN 检测边缘。图像识别分类,使用不同层类型支持卷积层,减少过拟合,加速训练过程,降低内存占用率。

    TensorFlow 加速所有不同类弄卷积层卷积运算。tf.nn.depthwise_conv2d,一个卷积层输出边接到另一个卷积层输入,创建遵循 Inception 架构网络 Rethinking the Inception Architecture for Computer Vision https://arxiv.org/abs/1512.00567 。tf.nn.separable_conv2d,规模较大模型不牺牲准确率加速训练,规模小模型快速收敛但准确率低。tf.nn.conv2d_transpos,卷积核用于新特征图,每部分填充卷积核相同值,卷积核遍历新图像,重叠部分相加。斯坦福大学课程 CS231n Winter 2016:Lecture 13。

    激活函数与其他层输出生成特征图,对某些运算结果平滑(微分),为神经网络引入非线性(输入输出曲线关系),刻画输入复杂变化,训练复杂模型。激活函数主要因素,单调,输出随输入增长,可用梯度下降法找局部极值点;可微分,定义域内任意一点有导数,输出可用梯度下降法。 tf.nn.relu,修正线性单元,斜坡函数。分段线性,输入非负输出相同,输入为负输出为 0。不受“梯度消失”影响,取值范围[0, +∞]。较大学习速率时,易受饱和神经元影响。损失信息但性能突出。输入秩 1 张量(向量),小于 0 置 0,其余分量不变。 tf.sigmoid,只接收浮点数,返回区间[0.0, 1.0]内的值。输入值较大返回接近 1.0,输入值较小返回接近 0.0。适用于真实输出位于[0.0, 1.0]。输入接近饱和或变化剧烈,输出范围缩减成为问题。输入 0,输出 0.5,sigmoid 函数值域中间点。 tf.tanh,双曲正切函数,值域[-1.0, 1.0],有输出负值能力。值域中间点为 0.0。网络下层期待输入为负值或 0.0,会有问题。 tf.nn.dropout,依据可配置概率输出设 0.0。适合少量随机性有助于训练。keep_prob 参数指定输出保持概率。每次执行,不同输出。丢弃输出设为 0.0。

    池化层减少过拟合,减小输入尺寸,提高性能。输入降采样,为后续层保留重要信息。池化层减小尺寸效率比 tf.nn.conv2d 高。 tf.nn.max_pool,跳跃遍历张量,卷积核覆盖元素最大数值作卷积结果。适合输入数据灰度与图像重要性相关。输入为前一层输出,非直接图像。跨度 strides 使用 image_height、image_width 遍历输入。只保留输入张量最大元素。最大池化(max-pooling),利用接受域(卷积核)完成。2X2 接受域,单个通路最小数量降采样。1X1 接受域,输出输入相同。 tf.nn.avg_pool,跳跃遍历张量,卷积核覆盖各深度值取平均。适合卷积核重要,实现值缩减。如输入张量宽度高度大,深度小。

    tf.nn.relu 是无界函数,归一化识别高频特征。tf.nn.local_response_normalization(tf.nn.lrn),局部响应归一化,给定向量,每个分量被 depth_radius 覆盖输入加权和除。输入保持在可接受范围。考虑每个值重要性。归一化输出调整到区间[-1.0, 1.0]。

    高级层减少代码冗余,遵循最佳实践。 tf.contrib.layers.convolution2d。权值初始化、偏置初始化、可训练变量输出、偏置相加、添加激活函数。卷积核,可训练变量。权值初始化用于卷积核首次运行值填充(tf.truncated_normal)。简单元组形式表示卷积核高度和宽度。输入图像,tf.image.convert_image_dtype,调整各分量表示颜色值。TensorFlow 要求浮点型描述图像颜色,分量在[0, 1]。 tf.contrib.layers.fully_connected。全连接层,每个输入输出存在连接。CNN 最后一层常是全连接层。TensorFlow 全连接层格式,tf.matmul(features,weight)+bias。输入张量与输出层每个神经元连接。

    原始输入需要传递给输入层。目标识别与分类输入层 tf.nn.conv2d。

    import tensorflow as tf features = tf.range(-2, 3) print features sess = tf.Session() print sess.run([features, tf.nn.relu(features)]) features2 = tf.to_float(tf.range(-1, 3)) print features2 print sess.run([features2, tf.sigmoid(features2)]) print sess.run([features2, tf.tanh(features2)]) features3 = tf.constant([-0.1, 0.0, 0.1, 0.2]) print features3 print sess.run([features3, tf.nn.dropout(features3, keep_prob=0.5)]) batch_size = 1 input_height = 3 input_width = 3 input_channels = 1 layer_input = tf.constant([ [ [[1.0], [0.2], [1.5]], [[0.1], [1.2], [1.4]], [[1.1], [0.4], [0.4]] ] ]) print layer_input kernel = [batch_size, input_height, input_width, input_channels] print kernel max_pool = tf.nn.max_pool(layer_input, kernel, [1, 1, 1, 1], "VALID") print max_pool print sess.run(max_pool) layer_input2 = tf.constant([ [ [[1.0], [1.0], [1.0]], [[1.0], [0.5], [0.0]], [[0.0], [0.0], [0.0]] ] ]) print layer_input2 avg_pool = tf.nn.avg_pool(layer_input2, kernel, [1, 1, 1, 1], "VALID") print avg_pool print sess.run(avg_pool) layer_input3 = tf.constant([ [ [[1.], [2.], [3.]] ] ]) print layer_input3 lrn = tf.nn.local_response_normalization(layer_input3) print lrn print sess.run([layer_input3, lrn]) image_input = tf.constant([ [ [[0., 0., 0.], [255., 255., 255.], [254., 0., 0.]], [[0., 191., 0.], [3., 108., 233.], [0., 191., 0.]], [[254., 0., 0.], [255., 255., 255.], [0., 0., 0.]] ] ]) print image_input conv2d = tf.contrib.layers.convolution2d( image_input, num_outputs=4, kernel_size=(1,1), activation_fn=tf.nn.relu, stride=(1,1), trainable=True) print conv2d sess.run(tf.global_variables_initializer()) print sess.run(conv2d) features4 = tf.constant([ [[1.2], [3.4]] ]) print features4 fc = tf.contrib.layers.fully_connected(features4, num_outputs=2) print fc sess.run(tf.global_variables_initializer()) print sess.run(fc) 

    参考资料: 《面向机器智能的 TensorFlow 实践》

    欢迎加我微信交流:qingxingfengzi

    我的微信公众号:qingxingfengzigz

    我老婆张幸清的微信公众号:qingqingfeifangz

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6083 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 02:32 PVG 10:32 LAX 19:32 JFK 22:32
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86