我一直在使用来自 tf.estimate.quickstart 的代码来运行我自己的图像分类任务,但我一直遇到标题中提到的错误,这是完整的代码:
我使用的数据集是 EMNIST 数据集,其中包含 28 x 28 维度的 handwritten 字母图像,我已经将它们转换为 .csv 文件,这样做图像识别训练是正确的吗?错误发生在这一行 classifier.train(input_fn=train_input_fn, steps=1)
,这是完整的堆栈跟踪:
Traceback (most recent call last): File "C:/Users/Slither/Documents/Scripts/lol.py", line 33, in <module> classifier.train(input_fn=train_input_fn, steps=1) File "C:\Users\Slither\Anaconda3\lib\site-packages\tensorflow\python\estimator\estimator.py", line 302, in train loss = self._train_model(input_fn, hooks, saving_listeners) File "C:\Users\Slither\Anaconda3\lib\site-packages\tensorflow\python\estimator\estimator.py", line 711, in _train_model features, labels, model_fn_lib.ModeKeys.TRAIN, self.config) File "C:\Users\Slither\Anaconda3\lib\site-packages\tensorflow\python\estimator\estimator.py", line 694, in _call_model_fn model_fn_results = self._model_fn(features=features, **kwargs) File "C:\Users\Slither\Anaconda3\lib\site-packages\tensorflow\python\estimator\canned\dnn.py", line 334, in _model_fn config=config) File "C:\Users\Slither\Anaconda3\lib\site-packages\tensorflow\python\estimator\canned\dnn.py", line 203, in _dnn_model_fn logits=logits) File "C:\Users\Slither\Anaconda3\lib\site-packages\tensorflow\python\estimator\canned\head.py", line 456, in create_estimator_spec name='class_string_lookup') File "C:\Users\Slither\Anaconda3\lib\site-packages\tensorflow\python\ops\lookup_ops.py", line 1197, in index_to_string_table_from_tensor vocabulary_list = ops.convert_to_tensor(vocabulary_list, dtypes.string) File "C:\Users\Slither\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 836, in convert_to_tensor as_ref=False) File "C:\Users\Slither\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 926, in internal_convert_to_tensor ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref) File "C:\Users\Slither\Anaconda3\lib\site-packages\tensorflow\python\framework\constant_op.py", line 229, in _constant_tensor_conversion_function return constant(v, dtype=dtype, name=name) File "C:\Users\Slither\Anaconda3\lib\site-packages\tensorflow\python\framework\constant_op.py", line 208, in constant value, dtype=dtype, shape=shape, verify_shape=verify_shape)) File "C:\Users\Slither\Anaconda3\lib\site-packages\tensorflow\python\framework\tensor_util.py", line 383, in make_tensor_proto _AssertCompatible(values, dtype) File "C:\Users\Slither\Anaconda3\lib\site-packages\tensorflow\python\framework\tensor_util.py", line 303, in _AssertCompatible (dtype.name, repr(mismatch), type(mismatch).__name__))TypeError: Expected string, got 0 of type 'int' instead.Process finished with exit code 1
回答:
词汇表应该是字符串,但您添加的是整数(您调用了 str(i) 并忽略了结果,当您可能的意思是 i = str(i) 时)。