返回

python-为什么 tf.random.uniform 会在函数内部而不是在主程序中生成重复项?

发布时间:2022-08-02 13:54:43 326
# node.js

我是 TensorFlow 的新手,我试图了解种子生成的工作原理(主要是函数),我的困惑是如果我在我的主程序中运行这段代码:

a = tf.random.uniform([1], seed=1)

b = tf.random.uniform([1], seed=1)

print(a)

print(b)

我得到这个输出

tf.Tensor([0.2390374], shape=(1,), dtype=float32)

tf.Tensor([0.22267115], shape=(1,), dtype=float32)

两个不同的张量(显然),但如果我尝试从一个函数中调用它:

@tf.function

def foo():

  a = tf.random.uniform([1], seed=1)

  b = tf.random.uniform([1], seed=1)

  print(a)

  print(b)

  return a, b

foo()

我明白了:

Tensor("random_uniform/RandomUniform:0", shape=(1,), dtype=float32)

Tensor("random_uniform_1/RandomUniform:0", shape=(1,), dtype=float32)

(<tf.张量:shape=(1,), dtype=float32, numpy=array([0.2390374], dtype=float32)>,

<tf.Tensor: shape=(1,), dtype=float32, numpy=array([0.2390374] , dtype=float32)>)

有两件事我不明白:

为什么函数内部的两个打印显示从函数的返回值到打印的输出不同,换句话说,为什么前两行与后两行相比没有显示值(numpy=array ...)?

为什么是a和b平等的?

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像