1

投稿の最後にコードを実行しようとすると、次のエラーが発生しました。しかし、私のコードで何が間違っているのかはわかりません。誰も私にテンソルフロープログラムのデバッグに関する秘訣を教えてもらえますか?Tensorflow:初期化されていない値beta1_powerを使用しようとしました

$ ./main.py 
Extracting /tmp/data/train-images-idx3-ubyte.gz 
Extracting /tmp/data/train-labels-idx1-ubyte.gz 
Extracting /tmp/data/t10k-images-idx3-ubyte.gz 
Extracting /tmp/data/t10k-labels-idx1-ubyte.gz 
2017-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 FMA 
Traceback (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-access 

FailedPreconditionError (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 tf 
from tensorflow.contrib import rnn 

#import mnist dataset 
from tensorflow.examples.tutorials.mnist import input_data 
mnist=input_data.read_data_sets("/tmp/data/", one_hot=True) 

learning_rate=0.001 

#defining placeholders 
#input image placeholder 
time_steps=28 
n_input=28 
x=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] tensors 
input=tf.unstack(x, time_steps, 1) 

#defining the network 
num_units=128 
lstm_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 task 
n_classes=10 
out_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 multiplication 
prediction=tf.matmul(outputs[-1], out_weights) + out_bias 

y=tf.placeholder("float", [None, n_classes]) 
loss=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y)) 
#optimization 

#model evaluation 
correct_prediction=tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1)) 
accuracy=tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) 

#initialize variables 
init=tf.global_variables_initializer() 
batch_size=128 
opt=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 accuracy 
test_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})) 
+0

おそらく、 'tf.global_variables_intiializer'のほかに' tf.local_variables_initializer'も必要です。それらを 'tf.group'を使ってグループ化します。 – RecencyEffect

答えて

1

変更の2行の順序:

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

AdamOptimizerが、それは自身の変数のしているので、あなたが前opt後initilizer initを定義する必要がありません。

+0

問題を修正します。これがエラーメッセージに基づいて問題であるとはどうでしたか?または、エラーメッセージがこの場合に役立たなかったか?もしそうなら、エラーメッセージが役に立たないときにテンソルフローコードをどのようにデバッグするのですか?ありがとう。 – user1424739

+1

それほど難しいことではありません。エラーの中で 'uninitialized'を使ったものは' init' opの後のノードを定義しています。そして、私は単に 'AdapOptimizer'にはいくつかあることを知っていました。デバッグに関しては、このツールを試すことができます - https://www.tensorflow.org/programmers_guide/debugger – Maxim

関連する問題