我这些天学习Tensorflow。
使用随机变量时,我注意到有两个不同的版本。一个是tf.random_normal()
等API,其他API是tf.random_normal_initialize()
等API。我认为那两个人正在做同样的事情。以下是一个例子。
random_normal = tf.random_normal_initializer(0.0, 1.0, seed=0)
a = random_normal([10])
b = tf.random_normal([10], 0.0, 1.0)
with tf.Session() as sess:
print (sess.run(a))
print (sess.run(b))
我有两个问题。
Q1。如果这两者完全相同,为什么他们会制作重复的API?
Q2。我假设Tensorflow中的类名以大写字母开头,例如tf.Variable
和" op"以较小的案例开始。那么为什么tf.random_normal_initializer
以小写字母开头,而实际上是一个类而不是操作。
答案 0 :(得分:1)
您是否看过各自的实施?初始化程序(已定义here)是一个内部调用tf.random_normal()
的类,它只是一个操作(定义为here)。例如,可以导出类实例的属性以供进一步使用,而op的参数不能。
关于你的第二个问题:你的假设是正确的。但使用的名称只是一个别名。在相应的文件中写入
@tf_export("keras.initializers.RandomNormal", "initializers.random_normal",
"random_normal_initializer")
class RandomNormal(Initializer):
"""Initializer that generates tensors with a normal distribution.
您可以看到这与命名约定一致。
希望这有帮助。