FailedPreconditionError(参见上面的回溯):尝试使用未初始化的值conv2 /偏差

时间:2017-06-29 18:29:09

标签: python machine-learning tensorflow computer-vision deep-learning

我正在使用预先训练过的AlexNet作为我的应用程序。我对我的数据进行了完美的调整。现在,在预测我使用此代码加载模型时。

saver = tf.train.import_meta_graph('/media/saurabh/New Volume/grasping_project/project_adcv/code/models_final/checkpoint/model_epoch479.ckpt.meta')


with tf.Session() as sess:
  #sess.run(tf.global_variables_initializer())
  # Load the pretrained weights into the non-trainable layer
  saver.restore(sess,"/media/saurabh/New Volume/grasping_project/project_adcv/code/models_final/checkpoint/model_epoch479.ckpt")

  # Loading the image stored in the folder
  img = imread('img0001.png')
  img = img - 140
  output = sess.run(score, feed_dict = {x:[img], keep_prob: 0.8})

它给了我这个错误,

Traceback (most recent call last):
  File "predictsingleimage.py", line 56, in <module>
    output = sess.run(score, feed_dict = {x:[img], keep_prob: 0.8})
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 767, in run
    run_metadata_ptr)
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 965, in _run
    feed_dict_string, options, run_metadata)
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1015, in _do_run
    target_list, options, run_metadata)
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1035, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value conv2/biases
     [[Node: conv2/biases/read = Identity[T=DT_FLOAT, _class=["loc:@conv2/biases"], _device="/job:localhost/replica:0/task:0/gpu:0"](conv2/biases)]]
     [[Node: fc8/fc8/_37 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_123_fc8/fc8", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]

Caused by op u'conv2/biases/read', defined at:
  File "predictsingleimage.py", line 39, in <module>
    model = AlexNet(x,keep_prob,num_classes,skip_layers)
  File "/media/saurabh/New Volume/grasping_project/project_adcv/code/models_final/alexnet.py", line 40, in __init__
    self.create()
  File "/media/saurabh/New Volume/grasping_project/project_adcv/code/models_final/alexnet.py", line 50, in create
    conv2 = conv(norm1, 5, 5, 256, 1, 1, groups = 2, name = 'conv2')
  File "/media/saurabh/New Volume/grasping_project/project_adcv/code/models_final/alexnet.py", line 146, in conv
    biases = tf.get_variable('biases', shape = [num_filters])
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 988, in get_variable
    custom_getter=custom_getter)
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 890, in get_variable
    custom_getter=custom_getter)
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 348, in get_variable
    validate_shape=validate_shape)
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 333, in _true_getter
    caching_device=caching_device, validate_shape=validate_shape)
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 684, in _get_single_variable
    validate_shape=validate_shape)
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/ops/variables.py", line 197, in __init__
    expected_shape=expected_shape)
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/ops/variables.py", line 315, in _init_from_args
    self._snapshot = array_ops.identity(self._variable, name="read")
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/ops/gen_array_ops.py", line 1490, in identity
    result = _op_def_lib.apply_op("Identity", input=input, name=name)
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 763, in apply_op
    op_def=op_def)
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 2327, in create_op
    original_op=self._default_original_op, op_def=op_def)
  File "/home/saurabh/code/env/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1226, in __init__
    self._traceback = _extract_stack()

FailedPreconditionError (see above for traceback): Attempting to use uninitialized value conv2/biases
     [[Node: conv2/biases/read = Identity[T=DT_FLOAT, _class=["loc:@conv2/biases"], _device="/job:localhost/replica:0/task:0/gpu:0"](conv2/biases)]]
     [[Node: fc8/fc8/_37 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_123_fc8/fc8", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]

现在,根据问题,我没有在alexnet的conv2中初始化一些变量(同样的模型在训练时没有问题)。所以,根据我使用的一些stackoverflow建议(在主代码中注释)

sess.run(tf.global_variables_initializer())

现在它没有显示错误,但我知道这是错误的,因为输出没有意义,我猜模型使用一些随机初始化值来预测,而不是微调重量。我该怎么办?

0 个答案:

没有答案