python - 即使我设置种子变量,为什么 TensorFlow 会产生不同的输出?
问题描述
在这段代码中,我试图找到一些生成数据的 Max 和 Max Index。
我正在尝试验证我是否获得了正确的最高分数。
问题:即使我正在设置种子变量,如果我Line 1
向下移动,生成的数据也会得到不同的输出。Line 2
这使得调试我的代码变得很困难。有什么建议么?
from keras import backend as K
import tensorflow as tf
box_confidence = tf.random_normal([19, 19 , 5, 1], mean=1, stddev=4, seed = 1)
boxes = tf.random_normal([19, 19, 5, 4], mean=1, stddev=4, seed = 1)
box_class_probs = tf.random_normal([19, 19, 5, 80], mean=1, stddev=4, seed = 1)
box_scores = box_confidence * box_class_probs
box_classes = K.argmax(box_scores,axis=-1)
box_class_scores = K.max(box_scores,axis=-1)
print("box_scores")
print(box_scores.shape)
print("box_classes")
print(box_classes.shape)
print("box_class_scores")
print(box_class_scores.shape)
with tf.Session() as sess:
scores_for_box1_anch1 = box_scores[1,1,1,:].eval()
max_scre_box1_anch1 = box_class_scores[1,1,1].eval() ###->>Line 1
max_scre_class_box1_anch1 = box_classes[1,1,1].eval() ###->>Line 2
print("scores_for_box1_anch1 : " + str(scores_for_box1_anch1))
print("*max_scre_class_box1_anch1: " + str(max_scre_class_box1_anch1))
print("*max_scre_box1_anch1 : " + str(max_scre_box1_anch1))
解决方案
每次调用eval
or时,sess.run
张量box_confidence
都会得到新的随机值。如果要获得与相同随机值对应的结果,则需要在同一个调用中计算它们:boxes
box_class_probs
with tf.Session() as sess:
scores_for_box1_anch1, max_scre_box1_anch1, max_scre_class_box1_anch1 = sess.run([
box_scores[1,1,1,:], box_class_scores[1,1,1], box_classes[1,1,1]])
print("scores_for_box1_anch1 : " + str(scores_for_box1_anch1))
print("*max_scre_class_box1_anch1: " + str(max_scre_class_box1_anch1))
print("*max_scre_box1_anch1 : " + str(max_scre_box1_anch1))
推荐阅读
- azure - MSAL无法在Angular 6中获取令牌时如何将浏览器重新路由到自定义“用户不在角色”页面
- vba - 宏编码,如何自动将文档重命名为上述文件夹名称
- fullcalendar - 我可以控制在全日历中即时显示多少事件吗?
- php - PHP 致命错误:未捕获错误:调用未定义函数 as_next_scheduled_action()
- mongodb - 在MongoDB中按数组元素分组
- r - 处理数据集中缺失的月份值并绘制时间序列
- imagemagick - Imagemagick - 如何获得最大的图层并压缩?
- sql - 在存储过程中,即使上一条语句失败,如何跳到下一条查询语句
- python - 这是引号内的错误Python 2.7
- javascript - 何时何地使用 knex.destroy?