Tensorflow 错误:TypeError:__init__() 得到了一个意外的关键字参数“dct_method”[关闭]
Posted
技术标签:
【中文标题】Tensorflow 错误:TypeError:__init__() 得到了一个意外的关键字参数“dct_method”[关闭]【英文标题】:Tensorflow error: TypeError: __init__() got an unexpected keyword argument 'dct_method' [closed] 【发布时间】:2018-08-01 21:51:34 【问题描述】:当使用当前版本的 Tensorflow-Gpu (1.5) 运行 Tensorflow Object Detection API 时,尝试在一组自定义图像上进行训练时会引发以下错误。
INFO:tensorflow:Scale of 0 disables regularizer.
INFO:tensorflow:Scale of 0 disables regularizer.
WARNING:tensorflow:From C:\tensorflow1\models\research\object_detection\trainer.py:228: create_global_step (from tensorflow.contrib.framework.python.ops.variables) is deprecated and will be removed in a future version.
Instructions for updating:
Please switch to tf.train.create_global_step
Traceback (most recent call last):
File "train.py", line 167, in <module>
tf.app.run()
File "C:\Users\Vic-10-3\AppData\Local\Continuum\anaconda3\envs\tensorflow1\lib\site-packages\tensorflow\python\platform\app.py", line 124, in run
_sys.exit(main(argv))
File "train.py", line 163, in main
worker_job_name, is_chief, FLAGS.train_dir)
File "C:\tensorflow1\models\research\object_detection\trainer.py", line 235, in train
train_config.prefetch_queue_capacity, data_augmentation_options)
File "C:\tensorflow1\models\research\object_detection\trainer.py", line 59, in create_input_queue
tensor_dict = create_tensor_dict_fn()
File "train.py", line 120, in get_next
dataset_builder.build(config)).get_next()
File "C:\tensorflow1\models\research\object_detection\builders\dataset_builder.py", line 138, in build
label_map_proto_file=label_map_proto_file)
File "C:\tensorflow1\models\research\object_detection\data_decoders\tf_example_decoder.py", line 110, in __init__
dct_method=dct_method),
TypeError: __init__() got an unexpected keyword argument 'dct_method'
预期的行为将是运行实际训练,但显然某些内容与最新版本不兼容。
重现错误的说明:Follow the tutorial 并在自定义数据集上进行训练。
【问题讨论】:
只有错误信息是不足以帮助你的。首先谷歌搜索返回了这个链接***.com/questions/45323136/…也许会有所帮助?添加一些代码和数据,我们可以查看以帮助您。 我在升级到 TensorFlow 1.5 时也遇到了这个错误。并且打算在堆栈溢出上问这个问题,但是我看到了这个帖子并直接投票。 @Umberto 不需要显示代码,我也有同样的问题,我在尝试使用来自对象检测 API 的预训练模块之一来训练自己的数据集时发生。所以我连一行代码都没有写,只是准备数据,然后将其转换为 TF 记录,然后开始训练,它在 1.4 上运行良好,但在 1.5 上失败。这就是我在 Github github.com/tensorflow/models/issues/3421 上提出的相同问题 我有一种感觉,这可能是因为图像名称......让我张贴你弄明白。 @Travicc 不。这不是因为图像名称,它只是一个错误。 【参考方案1】:此错误是由于文件 tf_example_decoder.py 与安装的 Tensorflow 不兼容。
在文件models/research/object_detection/data_decoders/tf_example_decoder.py中:
第 28 行:
slim_example_decoder = tf.contrib.slim.tfexample_decoder
第 104 行:
self.items_to_handlers =
fields.InputDataFields.image:
slim_example_decoder.Image(
image_key='image/encoded',
format_key='image/format',
channels=3,
dct_method=dct_method),....
.....
....
..
.
slim_example_decoder.Image 是 tf.contrib.slim.tfexample_decoder.Image
在 TensorFlow 1.5 源代码中,tf.contrib.slim.tfexample_decoder.Image
没有 dct_method
参数。因此,当 dct_method
参数被传递时,它会引发错误。
一个简单的技巧是不传递这个参数。因此编辑 tf_example_decoder.py 第 110 行以删除 dct_method=dct_method
。我试过了,效果很好,对训练没有任何影响。
【讨论】:
我做到了。现在我读到另一个类似的错误:AttributeError:'InputReader' object has no attribute 'num_parallel_map_calls',然后我也删除了它,还有另一个类似的错误。 是的,它对我有用。谢谢!! @Travicc 你可以尝试完全重新安装 TensorFlow 和 Models,也许它会工作。以上是关于Tensorflow 错误:TypeError:__init__() 得到了一个意外的关键字参数“dct_method”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Tensorflow Slim:TypeError:预期 int32,得到的列表包含类型为“_Message”的张量
使用 tf.gradients 和 tf.hessian 时出现 TensorFlow 错误:TypeError: Fetch argument None has invalid type <t
导入 TensorFlow 时出错。 TypeError:预期字节,找到描述符