2016-11-09 3 views
0

私はtensoflowを研究しており、スリムの例をテストしたいと思います。私は./scripts/train_lenet_on_mnist.sh命令すると、次のように、プログラムの実行は、タイプエラーを与えるエラー情報をeval_image_classifierする:私はプログラムに何が起こったのかわからないTensoflow Slim eval_image_classifier with TypeError dict_valuesをTensorまたはOperationに変換できません

I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcublas.so.8.0 locally 
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcudnn.so.5 locally 
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcufft.so.8.0 locally 
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcuda.so.1 locally 
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcurand.so.8.0 locally 
INFO:tensorflow:Scale of 0 disables regularizer. 
INFO:tensorflow:Evaluating /tmp/lenet-model/model.ckpt-20002 
INFO:tensorflow:Starting evaluation at 2016-11-09-02:55:57 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:951] Found device 0 with properties: 
name: Quadro K5000 
major: 3 minor: 0 memoryClockRate (GHz) 0.7055 
pciBusID 0000:03:00.0 
Total memory: 3.94GiB 
Free memory: 3.61GiB 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:972] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] 0: Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:1041] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Quadro K5000, pci bus id: 0000:03:00.0) 
INFO:tensorflow:Executing eval ops 
INFO:tensorflow:Executing eval_op 1/100 
INFO:tensorflow:Error reported to Coordinator: <class 'TypeError'>, Fetch argument dict_values([<tf.Tensor 'accuracy/update_op:0' shape=() dtype=float32>, <tf.Tensor 'recall_at_5/update_op:0' shape=() dtype=float32>]) has invalid type <class 'dict_values'>, must be a string or Tensor. (Can not convert a dict_values into a Tensor or Operation.) 
Traceback (most recent call last): 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 218, in init 
fetch, allow_tensor=True, allow_operation=True)) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 2455, in as_graph_element 
return self._as_graph_element_locked(obj, allow_tensor, allow_operation) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 2547, in _as_graph_element_locked 
% (type(obj).name, types_str)) 
TypeError: Can not convert a dict_values into a Tensor or Operation. 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
File "eval_image_classifier.py", line 191, in <module> 
tf.app.run() 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/platform/app.py", line 30, in run 
sys.exit(main(sys.argv[:1] + flags_passthrough)) 
File "eval_image_classifier.py", line 187, in main 
variables_to_restore=variables_to_restore) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/slim/python/slim/evaluation.py", line 359, in evaluate_once 
global_step=global_step) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/slim/python/slim/evaluation.py", line 260, in evaluation 
sess.run(eval_op, eval_op_feed_dict) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 717, in run 
run_metadata_ptr) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 902, in _run 
fetch_handler = _FetchHandler(self._graph, fetches, feed_dict_string) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 358, in init 
self._fetch_mapper = _FetchMapper.for_fetch(fetches) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 189, in for_fetch 
return _ElementFetchMapper(fetches, contraction_fn) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 222, in init 
% (fetch, type(fetch), str(e))) 
TypeError: Fetch argument dict_values([<tf.Tensor 'accuracy/update_op:0' shape=() dtype=float32>, <tf.Tensor 'recall_at_5/update_op:0' shape=() dtype=float32>]) has invalid type <class 'dict_values'>, must be a string or Tensor. (Can not convert a dict_values into a Tensor or Operation.) 

、私は任意のコードを改訂didnotちょうどgithubからコードパッケージをダウンロードし、正しい結果を与えるdatadownloadとtrainのためにダウンロードしてください。何か助けてください?私はオンラインで待っています。ありがとう

答えて

1

問題はpython2python3の互換性があります。私は解釈のためにpython3を使用しましたが、辞書からのキーはp ython2python3と異なります。 Python2

、単に辞書オブジェクトにkeys()を呼び出すと、あなたが期待するものが返されます、しかし、Python3で、keys()はもはやlistを返しませんが、ビューオブジェクトなので、TypeError例外を回避することができるとの互換性は、単にによって維持することができますdict_keysオブジェクトをリストに変換します。このリストは、Python2Python3の両方で通常と同じように索引付けできます。

を使用してeval_image_classifierを編集したところ、完全に動作します。

0

eval_image_classifier.pyのための他のpython3の変更は

for name, value in names_to_values.iteritems(): 

to 

for name, value in names_to_values.items(): 
です
関連する問題