TensorFlow Speech_Commands执行freeze.py时遇Unsuccessful TensorSliceReader错误
Fixing "Unsuccessful TensorSliceReader constructor" Error in TensorFlow Speech Commands Freeze Script
我帮你梳理下这个问题的解决思路,你遇到的这个NotFoundError核心原因是TensorFlow找不到你指定的检查点文件,咱们一步步排查解决:
1. 先确认检查点文件的路径是否正确
训练完成后,你的检查点文件会保存在训练时指定的--train_dir目录下,通常包含这几个关键文件:
model.ckpt-700.data-00000-of-00001model.ckpt-700.indexmodel.ckpt-700.metacheckpoint(记录最新检查点的文本文件)
运行freeze.py时,--start_checkpoint参数要指向不带后缀的检查点前缀,比如你的检查点文件在/root/my_train_dir/model.ckpt-700,那参数应该写成:
--start_checkpoint=/root/my_train_dir/model.ckpt-700
别加.meta或.data后缀,也别写错路径或者步数(你只训练了700步,就别写model.ckpt-1000)。
2. 验证检查点文件是否真的存在
在Digital Ocean的终端里,用ls命令查看你的训练目录,确认文件都在:
ls /path/to/your/train_dir
如果看不到那几个model.ckpt-700.*文件,说明训练过程可能没正确保存检查点——要么是训练时没指定--train_dir参数,要么是训练中途报错中断了,得重新检查训练命令并重新跑训练。
3. 确保训练与freeze的参数/模型结构一致
因为你修改了词汇列表(2个原词汇+1个自定义词汇),一定要注意:
- 训练时用的
--wanted_words参数,和运行freeze.py时的参数必须完全一致,比如训练时是--wanted_words=yes,no,mycustom,freeze时也得用一模一样的参数,不然模型变量结构不匹配,哪怕找到文件也会报错。 - 训练时如果修改了
models.py里的模型结构,freeze时也要用同一个修改后的models.py,避免变量数量、名称变化导致加载失败。
关于AVX2/FMA的警告
你看到的Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA只是个性能警告,不是导致当前错误的原因——它只是说你的CPU有更高级的指令集,但当前TensorFlow版本没编译支持,只会影响运行速度,不会功能故障,完全可以忽略。
你遇到的错误日志:
2018-05-13 14:22:14.599027: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA 2018-05-13 14:22:15.263582: W tensorflow/core/framework/op_kernel.cc:1318] OP_REQUIRES failed at save_restore_tensor.cc:170 : Not found: Unsuccessful TensorSliceReader constructor: Failed to find any matching files for Traceback (most recent call last): File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1322, in _do_call return fn(*args) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1307, in _run_fn options, feed_dict, fetch_list, target_list, run_metadata) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1409, in _call_tf_sessionrun run_metadata) tensorflow.python.framework.errors_impl.NotFoundError: Unsuccessful TensorSliceReader constructor: Failed to find any matching files for [[Node: save/RestoreV2 = RestoreV2[dtypes=[DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT], _device="/job:localhost/replica:0/task:0/device:CPU:0"](_arg_save/Const_0_0, save/RestoreV2/tensor_names, save/RestoreV2/shape_and_slices)]] During handling of the above exception, another exception occurred: Traceback (most recent call last): File "freeze.py", line 180, in <module> tf.app.run(main=main, argv=[sys.argv[0]] + unparsed) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/platform/app.py", line 126, in run _sys.exit(main(argv)) File "freeze.py", line 117, in main models.load_variables_from_checkpoint(sess, FLAGS.start_checkpoint) File "/root/models.py", line 123, in load_variables_from_checkpoint saver.restore(sess, start_checkpoint) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 1802, in restore {self.saver_def.filename_tensor_name: save_path}) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 900, in run run_metadata_ptr) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1135, in _run feed_dict_tensor, options, run_metadata) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1316, in _do_run run_metadata) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1335, in _do_call raise type(e)(node_def, op, message) tensorflow.python.framework.errors_impl.NotFoundError: Unsuccessful TensorSliceReader constructor: Failed to find any matching files for [[Node: save/RestoreV2 = RestoreV2[dtypes=[DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT], _device="/job:localhost/replica:0/task:0/device:CPU:0"](_arg_save/Const_0_0, save/RestoreV2/tensor_names, save/RestoreV2/shape_and_slices)]] Caused by op 'save/RestoreV2', defined at: File "freeze.py", line 180, in <module> tf.app.run(main=main, argv=[sys.argv[0]] + unparsed) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/platform/app.py", line 126, in run _sys.exit(main(argv)) File "freeze.py", line 117, in main models.load_variables_from_checkpoint(sess, FLAGS.start_checkpoint) File "/root/models.py", line 122, in load_variables_from_checkpoint saver = tf.train.Saver(tf.global_variables()) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 1338, in __init__ self.build() File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 1347, in build self._build(self._filename, build_save=True, build_restore=True) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 1384, in _build build_save=build_save, build_restore=build_restore) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 835, in _build_internal restore_sequentially, reshape) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 472, in _AddRestoreOps restore_sequentially) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 886, in bulk_restore return io_ops.restore_v2(filename_tensor, names, slices, dtypes) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/gen_io_ops.py", line 1463, in restore_v2 shape_and_slices=shape_and_slices, dtypes=dtypes, name=name) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper op_def=op_def)
内容的提问来源于stack exchange,提问作者Zharko Cekovski
相关产品推荐
相关产品推荐

