TensorFlow CIFAR10 CIFAR10_eval.py抛出错误:计算状态:无效参数:Assign要求两个张量的形状匹配

TensorFlow CIFAR10 CIFAR10_eval.py抛出错误:计算状态:无效参数:Assign要求两个张量的形状匹配,tensorflow,Tensorflow,我正在运行TensorFlow包中提供的CIFAR10示例上的数据集。我所做的只是更改数据的源目录,并修改几行代码。我可以成功地训练网络 但是,当我运行svhn_eval.py(相当于cifar10_eval.py,名称已更改,因此我知道如何组织文件)时,我得到了以下错误:assign需要两个张量的形状匹配。我想问题可能是由于 saver.restore(sess, ckpt.model_checkpoint_path) 随着跟踪到此结束并深入到TensorFlow的其他文件中。有人知道如何解

我正在运行TensorFlow包中提供的CIFAR10示例上的数据集。我所做的只是更改数据的源目录,并修改几行代码。我可以成功地训练网络

但是,当我运行svhn_eval.py(相当于cifar10_eval.py,名称已更改,因此我知道如何组织文件)时,我得到了以下错误:assign需要两个张量的形状匹配。我想问题可能是由于

saver.restore(sess, ckpt.model_checkpoint_path)
随着跟踪到此结束并深入到TensorFlow的其他文件中。有人知道如何解决这个问题吗

W tensorflow/core/common_runtime/executor.cc:1076] 0x1a5bad0 Compute status: Invalid argument: Assign requires shapes of both tensors to match. lhs shape= [2304,384] rhs shape= [4096,384]
     [[Node: save/Assign_5 = Assign[T=DT_FLOAT, use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/cpu:0"](local3/weights, save/restore_slice_5)]]
Traceback (most recent call last):
  File "/home/samuelchin/svhn/svhn_eval.py", line 161, in <module>
    tf.app.run()
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/default/_app.py", line 30, in run
    sys.exit(main(sys.argv))
  File "/home/samuelchin/svhn/svhn_eval.py", line 157, in main
    evaluate()
  File "/home/samuelchin/svhn/svhn_eval.py", line 147, in evaluate
    eval_once(saver, summary_writer, top_k_op, summary_op)
  File "/home/samuelchin/svhn/svhn_eval.py", line 78, in eval_once
    saver.restore(sess, ckpt.model_checkpoint_path)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/saver.py", line 891, in restore
    sess.run([self._restore_op_name], {self._filename_tensor_name: save_path})
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 373, in run
    results = self._do_run(target_list, unique_fetch_targets, feed_dict_string)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 449, in _do_run
    e.code)
tensorflow.python.framework.errors.InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [2304,384] rhs shape= [4096,384]
     [[Node: save/Assign_5 = Assign[T=DT_FLOAT, use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/cpu:0"](local3/weights, save/restore_slice_5)]]
Caused by op u'save/Assign_5', defined at:
  File "/home/samuelchin/svhn/svhn_eval.py", line 161, in <module>
    tf.app.run()
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/default/_app.py", line 30, in run
    sys.exit(main(sys.argv))
  File "/home/samuelchin/svhn/svhn_eval.py", line 157, in main
    evaluate()
  File "/home/samuelchin/svhn/svhn_eval.py", line 137, in evaluate
    saver = tf.train.Saver(variables_to_restore)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/saver.py", line 713, in __init__
    restore_sequentially=restore_sequentially)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/saver.py", line 432, in build
    filename_tensor, vars_to_save, restore_sequentially, reshape)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/saver.py", line 202, in _AddRestoreOps
    validate_shape=not reshape))
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_state_ops.py", line 40, in assign
    use_locking=use_locking, name=name)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/op_def_library.py", line 660, in apply_op
    op_def=op_def)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1850, in create_op
    original_op=self._default_original_op, op_def=op_def)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1049, in __init__
    self._traceback = _extract_stack()

我们现在要问自己的问题是,为什么要乘以4?

解决方案是cifar10.py有一个名为IMAGE\u SIZE的变量。我把它保留为24,因为我认为它不会影响任何事情。但是,当您尝试运行测试集时,会将输入裁剪为IMAGE\u size x IMAGE\u size

因此,当这一点没有改变时,张量尺寸就不匹配了。将该变量更改为32就可以了

lhs shape= [2304,384] rhs shape= [4096,384]
2304 = 24 * 24 * 4
4096 = 32 * 32 * 4