trunc_normal = lambda stddev: tf.truncated_normal_initializer(0.0, stddev)解析

在读Inception代码的时候,遇到代码,

import tensorflow as tf

slim = tf.contrib.slim
trunc_normal = lambda stddev: tf.truncated_normal_initializer(0.0, stddev)

分享一下它的工作原理。

1、首先是引入TensorFlow模块

2、lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。

add = lambda x, y : x+y
add(1,2)  # 结果为3

等价于函数

def a(x, y):
    return x + y
print(a(1, 2))

3、tf.truncated_normal_initializer 从截断的正态分布中输出随机值。

生成的值服从具有指定平均值和标准偏差的正态分布,如果生成的值大于平均值2个标准偏差的值则丢弃重新选择。

ARGS:

mean:一个python标量或一个标量张量。(要生成的随机值的均值)

stddev:一个python标量或一个标量张量。(要生成的随机值的标准偏差)

seed:一个Python整数。用于创建随机种子。(查看 tf.set_random_seed 行为)

dtype:数据类型。(只支持浮点类型)

那么这一个函数trunc_normal就是返回 tf.truncated_normal_initializer(0.0, stddev)的值,最后产生一个平均值为0.0,标准差为stddev的截断的正太分布。

4、具体使用这个函数的时候调用tensorflow的tf.contrib.slim就很方便啦。

slim = tf.contrib.slim

猜你喜欢

转载自blog.csdn.net/TeFuirnever/article/details/88788660
今日推荐