我是靠谱客的博主 糊涂马里奥,最近开发中收集的这篇文章主要介绍TensorFlow 入门 第一课--基本函数学习(1): tf.get_variable 详解+CNN卷积层维数分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

tf.get_variable(name, shape=None, dtype=None, initializer=None, regularizer=None, 
trainable=True, collections=None, caching_device=None, partitioner=None, validate_shape=True, 
custom_getter=None)

参数注意:

  • initializer可以有以下选项:

   tf.constant_initializer(value=0, dtype=tf.float32)

  tf.random_normal_initializer(mean=0.0, stddev=1.0, seed=None, dtype=tf.float32)

tf.truncated_normal_initializer(mean=0.0, stddev=1.0, seed=None, dtype=tf.float32)
tf.random_uniform_initializer(minval=0, maxval=None, seed=None, dtype=tf.float32)
tf.uniform_unit_scaling_initializer(factor=1.0, seed=None, dtype=tf.float32)
tf.zeros_initializer(shape, dtype=tf.float32, partition_info=None)
tf.ones_initializer(dtype=tf.float32, partition_info=None)
tf.orthogonal_initializer(gain=1.0, dtype=tf.float32, seed=None)
tf.contrib.layers.xavier_initializer(seed = 0)#这根据tf 的manual,是额外的部分,处在不稳定的或者试验阶段的代码 
 
看其说明:Returns an initializer performing "Xavier" initialization for weights.

这一算法--Xavier Initilization 在random(shape)的W权重矩阵的基础上乘上一个1/n^[l-1]

而相对应的还有一种算法,如果这一层的激活函数时relu ,那么使用He. Initilization也就是

在random(shape)的W权重矩阵的基础上乘上一个2/n^[l-1]

红色部分的知识来源于吴恩达的第二课,关于如何解决梯度爆炸和梯度消失的方法


  • shape参数详解:

    如果,你实现的是Dnn那么W肯定是2维的,所以在这个shape参数就是第l层W的矩阵大小

    即,但如果是CNN,那么W的的维数可以由下面的推导得出:每个filter的大小为

    ,其中代表的是这个filter的通道数和前面一层的输出的通道数      保持一致,,那么根据

    的维数就是在当前l层filter所构成的维数,即为

    那么在使用 tf.get_variable 时,里面的shape就由此决定

      




最后

以上就是糊涂马里奥为你收集整理的TensorFlow 入门 第一课--基本函数学习(1): tf.get_variable 详解+CNN卷积层维数分析的全部内容,希望文章能够帮你解决TensorFlow 入门 第一课--基本函数学习(1): tf.get_variable 详解+CNN卷积层维数分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部