Tensorflow: 尝试使用未初始化的值 beta1_power

当我尝试运行文章末尾的代码时,遇到了以下错误。但我不清楚我的代码有什么问题。有人能告诉我调试TensorFlow程序的技巧吗?

$ ./main.py Extracting /tmp/data/train-images-idx3-ubyte.gzExtracting /tmp/data/train-labels-idx1-ubyte.gzExtracting /tmp/data/t10k-images-idx3-ubyte.gzExtracting /tmp/data/t10k-labels-idx1-ubyte.gz2017-12-11 22:53:16.061163: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMATraceback (most recent call last):  File "./main.py", line 55, in <module>    sess.run(opt, feed_dict={x: batch_x, y: batch_y})  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 889, in run    run_metadata_ptr)  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1120, in _run    feed_dict_tensor, options, run_metadata)  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1317, in _do_run    options, run_metadata)  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1336, in _do_call    raise type(e)(node_def, op, message)tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value beta1_power     [[Node: beta1_power/read = Identity[T=DT_FLOAT, _class=["loc:@Variable"], _device="/job:localhost/replica:0/task:0/device:CPU:0"](beta1_power)]]Caused by op u'beta1_power/read', defined at:  File "./main.py", line 46, in <module>    opt=tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(loss)  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/training/optimizer.py", line 353, in minimize    name=name)  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/training/optimizer.py", line 474, in apply_gradients    self._create_slots([_get_variable_for(v) for v in var_list])  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/training/adam.py", line 130, in _create_slots    trainable=False)  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 1927, in variable    caching_device=caching_device, name=name, dtype=dtype)  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/variables.py", line 213, in __init__    constraint=constraint)  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/variables.py", line 356, in _init_from_args    self._snapshot = array_ops.identity(self._variable, name="read")  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/array_ops.py", line 125, in identity    return gen_array_ops.identity(input, name=name)  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/gen_array_ops.py", line 2071, in identity    "Identity", input=input, name=name)  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper    op_def=op_def)  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 2956, in create_op    op_def=op_def)  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1470, in __init__    self._traceback = self._graph._extract_stack()  # pylint: disable=protected-accessFailedPreconditionError (see above for traceback): Attempting to use uninitialized value beta1_power     [[Node: beta1_power/read = Identity[T=DT_FLOAT, _class=["loc:@Variable"], _device="/job:localhost/replica:0/task:0/device:CPU:0"](beta1_power)]]

代码如下。它使用了LSTM。

#!/usr/bin/env python# vim: set noexpandtab tabstop=2 shiftwidth=2 softtabstop=-1 fileencoding=utf-8:import tensorflow as tffrom tensorflow.contrib import rnn#import mnist datasetfrom tensorflow.examples.tutorials.mnist import input_datamnist=input_data.read_data_sets("/tmp/data/", one_hot=True)learning_rate=0.001#defining placeholders#input image placeholdertime_steps=28n_input=28x=tf.placeholder("float", [None, time_steps, n_input])#processing the input tensor from [batch_size,n_steps,n_input] to "time_steps" number of [batch_size,n_input] tensorsinput=tf.unstack(x, time_steps, 1)#defining the networknum_units=128lstm_layer = rnn.BasicLSTMCell(num_units, forget_bias=1)outputs,_ = rnn.static_rnn(lstm_layer, input, dtype="float32")#weights and biases of appropriate shape to accomplish above taskn_classes=10out_weights=tf.Variable(tf.random_normal([num_units, n_classes]))out_bias=tf.Variable(tf.random_normal([n_classes]))#converting last output of dimension [batch_size,num_units] to [batch_size,n_classes] by out_weight multiplicationprediction=tf.matmul(outputs[-1], out_weights) + out_biasy=tf.placeholder("float", [None, n_classes])loss=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y))#optimization#model evaluationcorrect_prediction=tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))accuracy=tf.reduce_mean(tf.cast(correct_prediction, tf.float32))#initialize variablesinit=tf.global_variables_initializer()batch_size=128opt=tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(loss)with tf.Session() as sess:    sess.run(init)    iter=1    while iter<800:        batch_x, batch_y = mnist.train.next_batch(batch_size=batch_size)        batch_x=batch_x.reshape((batch_size, time_steps, n_input))        sess.run(opt, feed_dict={x: batch_x, y: batch_y})        if iter %10==0:            acc=sess.run(accuracy,feed_dict={x:batch_x,y:batch_y})            los=sess.run(loss,feed_dict={x:batch_x,y:batch_y})            print("For iter ",iter)            print("Accuracy ",acc)            print("Loss ",los)            print("__________________")        iter=iter+1#calculating test accuracytest_data = mnist.test.images[:128].reshape((-1, time_steps, n_input))test_label = mnist.test.labels[:128]print("Testing Accuracy:", sess.run(accuracy, feed_dict={x: test_data, y: test_label}))

回答:

将这两行的顺序调换:

opt=tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(loss)init=tf.global_variables_initializer()

由于AdamOptimizer有自己的变量,你应该在opt之后定义初始化器init,而不是在之前。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注