TensorFlow中权重的随机初始化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TensorFlow中权重的随机初始化相关的知识,希望对你有一定的参考价值。

  一开始没看懂stddev是什么参数,找了一下,在tensorflow/python/ops里有random_ops,其中是这么写的:

def random_normal(shape, mean=0.0, stddev=1.0, dtype=types.float32,
                  seed=None, name=None):
  """Outputs random values from a normal distribution.

  Args:
    shape: A 1-D integer Tensor or Python array. The shape of the output tensor.
    mean: A 0-D Tensor or Python value of type `dtype`. The mean of the normal
      distribution.
    stddev: A 0-D Tensor or Python value of type `dtype`. The standard deviation
      of the normal distribution.
    dtype: The type of the output.
    seed: A Python integer. Used to create a random seed for the distribution.
      See
      [`set_random_seed`](../../api_docs/python/constant_op.md#set_random_seed)
      for behavior.
    name: A name for the operation (optional).

  Returns:
    A tensor of the specified shape filled with random normal values.
  """

  也就是按照正态分布初始化权重,mean是正态分布的平均值,stddev是正态分布的标准差(standard deviation),seed是作为分布的random seed(随机种子,我百度了一下,跟什么伪随机数发生器还有关,就是产生随机数的),在mnist/concolutional中seed赋值为66478,挺有意思,不知道是什么原理。

 

  后面还有truncated_normal的定义:

def truncated_normal(shape, mean=0.0, stddev=1.0, dtype=types.float32,
                     seed=None, name=None):
  """Outputs random values from a truncated normal distribution.

  The generated values follow a normal distribution with specified mean and
  standard deviation, except that values whose magnitude is more than 2 standard
  deviations from the mean are dropped and re-picked.

  Args:
    shape: A 1-D integer Tensor or Python array. The shape of the output tensor.
    mean: A 0-D Tensor or Python value of type `dtype`. The mean of the
      truncated normal distribution.
    stddev: A 0-D Tensor or Python value of type `dtype`. The standard deviation
      of the truncated normal distribution.
    dtype: The type of the output.
    seed: A Python integer. Used to create a random seed for the distribution.
      See
      [`set_random_seed`](../../api_docs/python/constant_op.md#set_random_seed)
      for behavior.
    name: A name for the operation (optional).

  Returns:
    A tensor of the specified shape filled with random truncated normal values.
  """

  截断正态分布,以前都没听说过。

 

  TensorFlow还提供了平均分布等。

 

参考:

1.https://tensorflow.googlesource.com/tensorflow/+/refs/heads/master/tensorflow/g3doc/api_docs/python

2.随机种子:http://baike.baidu.com/link?url=bjDp9u9pkEg2oWOffMep1RW6B1U-0AX2FNmykTtCAa8L_7xzA0ygq6AyLBf8pv7XW8b4gwUKlvMWiCsp32Nu8K

以上是关于TensorFlow中权重的随机初始化的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow MNIST 评估预测

Tensorflow学习教程------过拟合

使用 Tensorflow 初始化神经网络权重

在 Tensorflow 中重新初始化变量

TensorFlow 对象检测 api:使用预训练模型在训练中更改类数时的分类权重初始化

Tensorflow - 从恢复的模型中平均模型权重