小编Doj*_*ira的帖子

TensorFlow:不可重复的结果

问题

我有一个Python脚本,它使用TensorFlow创建一个多层感知器网络(带有丢失),以便进行二进制分类.即使我一直小心设置Python和TensorFlow种子,但我得到了不可重复的结果.如果我跑一次然后再跑,我会得到不同的结果.我甚至可以运行一次,退出Python,重新启动Python,再次运行并获得不同的结果.

我试过的

我知道有些人发布了关于在TensorFlow中获得不可重复结果的问题(例如,"如何获得稳定的结果...","set_random_seed无效......","如何在TensorFlow中获得可重现的结果"),以及答案通常被证明是错误的使用/理解tf.set_random_seed().我已经确保实施所提供的解决方案,但这并没有解决我的问题.

一个常见的错误是没有意识到这tf.set_random_seed()只是一个图级别的种子,并且多次运行脚本会改变图形,解释不可重复的结果.我使用以下语句打印出整个图表并验证(通过差异)即使结果不同,图表也是相同的.

print [n.name for n in tf.get_default_graph().as_graph_def().node]
Run Code Online (Sandbox Code Playgroud)

我也使用函数调用,tf.reset_default_graph()tf.get_default_graph().finalize()避免对图形进行任何更改,即使这可能是过度杀伤.

(相关)守则

我的脚本长约360行,所以这里是相关的行(显示了剪切代码).ALL_CAPS中的任何项目都是在Parameters下面的块中定义的常量.

import numpy as np
import tensorflow as tf

from copy import deepcopy
from tqdm import tqdm  # Progress bar

# --------------------------------- Parameters ---------------------------------
(snip)

# --------------------------------- Functions ---------------------------------
(snip)

# ------------------------------ Obtain Train Data -----------------------------
(snip)

# ------------------------------ Obtain Test Data -----------------------------
(snip)

random.seed(12345)
tf.set_random_seed(12345)

(snip)

# ------------------------- Build the …
Run Code Online (Sandbox Code Playgroud)

python random tensorflow

13
推荐指数
2
解决办法
5630
查看次数

TensorFlow:训练for循环中的每次迭代都较慢

我正在训练一个标准的,简单的多层感知器神经网络,在TensorFlow中有三个隐藏层.我添加了一个文本进度条,以便我可以观察迭代时代的进度.我发现的是每个迭代的处理时间在前几个时期之后增加.这是一个示例截图,显示每次迭代的增加:

每次迭代的执行时间随着迭代次数的增加而增加

在这种情况下,前几次迭代大约需要1.05s/it,而100%则需要4.01s/it.

相关代码列于此处:

# ------------------------- Build the TensorFlow Graph -------------------------

with tf.Graph().as_default():

    (a bunch of statements for specifying the graph)

# --------------------------------- Training ----------------------------------

    sess = tf.InteractiveSession()
    sess.run(tf.initialize_all_variables())

    print "Start Training"

    pbar = tqdm(total = training_epochs)
    for epoch in range(training_epochs):
        avg_cost = 0.0
    batch_iter = 0

    while batch_iter < batch_size:
        train_features = []
        train_labels = []
        batch_segments = random.sample(train_segments, 20)
        for segment in batch_segments:
            train_features.append(segment[0])
            train_labels.append(segment[1])
        sess.run(optimizer, feed_dict={x: train_features, y_: train_labels})
        line_out = "," + str(batch_iter) + "\n"
        train_outfile.write(line_out)
        line_out …
Run Code Online (Sandbox Code Playgroud)

python for-loop tensorflow

4
推荐指数
1
解决办法
3337
查看次数

标签 统计

python ×2

tensorflow ×2

for-loop ×1

random ×1