案例一:

import tensorflow as tf
tf.set_random_seed(42)
sess = tf.InteractiveSession()
a = tf.constant([1, 2, 3, 4, 5])
tf.initialize_all_variables().run()
a_shuf = tf.random_shuffle(a)
print(a.eval())
print(a_shuf.eval())
sess.close()

上述代码重复运行会产生不一样的结果

import tensorflow as tf
tf.set_random_seed(42)
sess = tf.InteractiveSession()
a = tf.constant([1, 2, 3, 4, 5])
tf.initialize_all_variables().run()
a_shuf = tf.random_shuffle(a,seed=42)
print(a.eval())
print(a_shuf.eval())
sess.close()

这段代码产生相同的结果

案例二:

# using global seed
tf.set_random_seed(1)
fc1_W = tf.Variable(tf.truncated_normal(shape=(2, 2), mean=0, stddev=1))
fc2_W = tf.Variable(tf.truncated_normal(shape=(2, 2), mean=0, stddev=1))# initialize session
with tf.Session() as sess:sess.run(tf.global_variables_initializer())print('\n variables with global seed ')print('round 2.0')print(fc1_W.eval(sess))print(fc2_W.eval(sess))# new session
with tf.Session() as sess:sess.run(tf.global_variables_initializer())print('round 2.1')print(fc1_W.eval(sess))print(fc2_W.eval(sess))

第一次运行:
 variables with global seed 
round 2.0
[[-0.89710885  0.39287093]
 [ 0.4009913  -1.9170585 ]]
[[ 1.2090957  -0.13654923]
 [ 1.6384401  -0.18959242]]
round 2.1
[[-0.89710885  0.39287093]
 [ 0.4009913  -1.9170585 ]]
[[ 1.2090957  -0.13654923]
 [ 1.6384401  -0.18959242]]
第一次与第二次不断的创建图,其结果是相同的

第二次运行:
variables with global seed 
round 2.0
[[ 1.1742289   0.03763932]
 [ 0.7202809  -0.52002007]]
[[ 1.5818138   0.81615436]
 [ 1.2647419  -0.6432518 ]]
round 2.1
[[ 1.1742289   0.03763932]
 [ 0.7202809  -0.52002007]]
[[ 1.5818138   0.81615436]
 [ 1.2647419  -0.6432518 ]]

第一次运行与第二次运行结果不相同;

结论:只靠tf.set_random_seed是没有办法做到消除随机性 ,该函数可以在一次运行中,创建的多个图的结果是一样的; 因为从本质上来讲,operation-level的初始值是一样的(因为初始化一次被多个图使用),而graph-level的随机种子相同,所以对于不同的图而言,不存在随机性;

随机性由两个随机种子确认(Operations that rely on a random seed actually derive it from two seeds: the graph-level and operation-level seeds来自 于tensorflow官网)

tensorflow随机性设置相关推荐

  1. TensorFlow中设置学习率的方式

    目录 1. 指数衰减 2. 分段常数衰减 3. 自然指数衰减 4. 多项式衰减 5. 倒数衰减 6. 余弦衰减 6.1 标准余弦衰减 6.2 重启余弦衰减 6.3 线性余弦噪声 6.4 噪声余弦衰减 ...

  2. 一文简单弄懂tensorflow_在tensorflow中设置梯度衰减

    我是从keras入门深度学习的,第一个用的demo是keras实现的yolov3,代码很好懂(其实也不是很好懂,第一次也搞了很久才弄懂) 然后是做的车牌识别,用了tiny-yolo来检测车牌位置,当时 ...

  3. tensorflow动态设置trainable

    tensorflow中定义的tf.Variable时,可以通过trainable属性控制这个变量是否可以被优化器更新.但是,tf.Variable的trainable属性是只读的,我们无法动态更改这个 ...

  4. tensorflow/pytorch 设置GPU的使用

    os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" # 按照PCI_BUS_ID顺序从0开始排列GPU设备 os.en ...

  5. numpy 随机数_TF+Numpy减少随机性的影响

    有这么一个段子: 深度学习论文有一半不公开源代码,另外公开源代码的一半复现不了,鬼知道作者怎么把结果搞得这么牛逼的. 其中一个原因就是深度学习使用了大量的随机数,就我一般使用的Python+Tenso ...

  6. TensorFlow 卷积神经网络实用指南:1~5

    原文:Hands-On Convolutional Neural Networks with TensorFlow 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学 ...

  7. DL:深度学习框架Pytorch、 Tensorflow各种角度对比

    DL:深度学习框架Pytorch. Tensorflow各种角度对比 目录 先看两个框架实现同样功能的代码 1.Pytorch.Tensorflow代码比较 2.Tensorflow(数据即是代码,代 ...

  8. [转]在C#中像Python一样编写TensorFlow机器学习代码

    机器学习是一个令人激动人心的领域,一直有新的技术突破.研究人员不断推动机器智能的提升,教机器如何听说读写--这些曾经是我们人类专属的技能.机器学习的首选语言是Python,最受欢迎的库是Google的 ...

  9. Tensorflow高级API的进阶--利用tf.contrib.learn建立输入函数

    正文共5958个字,预计阅读时间15分钟. 笔记整理者:王小草 笔记整理时间:2017年2月27日 笔记对应的官方文档:https://www.tensorflow.org/get_started/i ...

最新文章

  1. [业界资讯]Window7下的IE8新漏洞KB973874成功修复
  2. mysql报错:Deadlock found when trying to get lock;
  3. C++ | 内联函数 inline
  4. 作者:姚前(1970-),男,中国人民银行征信中心副主任、高级工程师
  5. Python 读写文本(open)
  6. 清除浮动(HTML、CSS)
  7. Docker从理论到实践(九)------使用Dockerfile创建镜像
  8. CeBIT亮点:IBM“绿色地平线” 战斗在雾霾治理的科技前线
  9. 支付宝宣布刷脸支付将全面接管扫码支付
  10. Audacity分析浊音、清音、爆破音特点
  11. 用vs打开已有web项目运行时显示网页无法访问
  12. 【Python】os.path.exists()的含义 及文件存在但os.path.exists()返回False的原因
  13. Windows电脑垃圾清理 - 如何删除临时文件(Temp文件夹)
  14. jQuery新手入门
  15. 【论文阅读32】《Texture Defragmentation for Photo-Reconstructed 3D Models》
  16. 查看附件html,附件查看器
  17. 原力计划第一周榜单揭晓!
  18. UVA 10474 Where is the Marble
  19. 【原创】五子棋大师2.0完整源码
  20. 水务行业现状和问题梳理

热门文章

  1. python 自定义异常和主动抛出异常(raise)的操作
  2. Python: 大型数组运算
  3. python数据类型详解(全面)
  4. c语言程序的命令行输入,C程序获取命令行参数
  5. python 多进程 multiprocessing 进程池 pool apply_async()函数与apply()函数的用法
  6. javascript中break和continue
  7. ubuntu 将 python 设定为python3, pip设定为pip3
  8. 分析对象内部结构,并详解synchronized锁膨胀升级和降级的过程
  9. inheritance中文Java语言_3.3Java语言面向对象的封装(Encapsulation)、继承(Inheritance)、多态(polymorphic)...
  10. JUC系列(五)| Synchonized关键字进一步理解