首页 > 解决方案 > Tensorflow TypeError:name_scope中的预期字符串或类似字节的对象

问题描述

我在 Transformer 模型中遇到了 TypeError。它可能与 相关name_scope,但我不知道如何找到错误 name_scope。

主要错误日志:

 File "/usr/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 358, in train
    loss = self._train_model(input_fn, hooks, saving_listeners)
  File "/usr/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1122, in _train_model
    return self._train_model_distributed(input_fn, hooks, saving_listeners)
  File "/usr/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1185, in _train_model_distributed
    self._config._train_distribute, input_fn, hooks, saving_listeners)
  File "/usr/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1254, in _actual_train_model_distributed
    self.config))
  File "/usr/lib/python3.7/site-packages/tensorflow/python/distribute/distribute_lib.py", line 1199, in call_for_each_replica
    return self._call_for_each_replica(fn, args, kwargs)
  File "/usr/lib/python3.7/site-packages/tensorflow/contrib/distribute/python/one_device_strategy.py", line 144, in _call_for_each_replica
    return fn(*args, **kwargs)
  File "/usr/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1112, in _call_model_fn
    model_fn_results = self._model_fn(features=features, **kwargs)
  File "/home/inno/Documents/course_2019/nlp/code/train_and_evaluate.py", line 62, in model_fn
    logits = model(inputs, targets)
  File "/home/inno/Documents/course_2019/nlp/code/model/transformer.py", line 69, in __call__
    encoder_outputs = self.encode(inputs, attention_bias)
  File "/home/inno/Documents/course_2019/nlp/code/model/transformer.py", line 104, in encode
    return self.encoder_stack(encoder_inputs, attention_bias, inputs_padding)
  File "/usr/lib/python3.7/site-packages/tensorflow/python/layers/base.py", line 491, in __call__
    self._set_scope(scope)
  File "/usr/lib/python3.7/site-packages/tensorflow/python/layers/base.py", line 295, in _set_scope
    scope, default_name=self._base_name) as captured_scope:
  File "/usr/lib/python3.7/site-packages/tensorflow/python/ops/variable_scope.py", line 2204, in __enter__
    return self._enter_scope_uncached()
  File "/usr/lib/python3.7/site-packages/tensorflow/python/ops/variable_scope.py", line 2305, in _enter_scope_uncached
    current_name_scope_name = current_name_scope.__enter__()
  File "/usr/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 6088, in __enter__
    return self._name_scope.__enter__()
  File "/usr/lib/python3.7/contextlib.py", line 112, in __enter__
    return next(self.gen)
  File "/usr/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 3988, in name_scope
    if not _VALID_SCOPE_NAME_REGEX.match(name):
TypeError: expected string or bytes-like object

tf.estimator用来训练和评估。我已经检查了所有的name_scopeand summary.scalar。可能是变量中的错误吗?

完整的错误日志:

Begin to train and eval Transformer model...

WARNING: The TensorFlow contrib module will not be included in TensorFlow 2.0.
For more information, please see:
  * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md
  * https://github.com/tensorflow/addons
If you depend on functionality not listed there, please file an issue.

INFO:tensorflow:Initializing RunConfig with distribution strategies.
INFO:tensorflow:Not using Distribute Coordinator.
INFO:tensorflow:Using config: {'_model_dir': '/home/inno/Documents/course_2019/nlp/saved_model', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': allow_soft_placement: true
graph_options {
  rewrite_options {
    meta_optimizer_iterations: ONE
  }
}
, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': <tensorflow.contrib.distribute.python.one_device_strategy.OneDeviceStrategy object at 0x7fc556f8c780>, '_device_fn': None, '_protocol': None, '_eval_distribute': None, '_experimental_distribute': None, '_service': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7fc556f8c860>, '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1, '_distribute_coordinator_mode': None}
INFO:tensorflow:Train schedule:
INFO:tensorflow:    1. train for 10000 steps...
INFO:tensorflow:    2. evaluate model..
INFO:tensorflow:    3. compute BLEU..
INFO:tensorflow:Repeated above until the BLEU score reaches 15.0
INFO:tensorflow:Iteration 1:
WARNING:tensorflow:From /usr/lib/python3.7/site-packages/tensorflow/python/data/ops/dataset_ops.py:1419: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
INFO:tensorflow:Calling model_fn.
Traceback (most recent call last):
  File "Main.py", line 74, in <module>
    fire.Fire()
  File "/usr/lib/python3.7/site-packages/fire/core.py", line 127, in Fire
    component_trace = _Fire(component, args, context, name)
  File "/usr/lib/python3.7/site-packages/fire/core.py", line 366, in _Fire
    component, remaining_args)
  File "/usr/lib/python3.7/site-packages/fire/core.py", line 542, in _CallCallable
    result = fn(*varargs, **kwargs)
  File "Main.py", line 65, in train
    hooks=hooks, stop_threshold=stop_threshold, vocab_file=vocab_file)
  File "/home/inno/Documents/course_2019/nlp/code/train_and_evaluate.py", line 351, in run_transformaer
    vocab_file=vocab_file)
  File "/home/inno/Documents/course_2019/nlp/code/train_and_evaluate.py", line 232, in run_loop
    hooks=train_hooks)
  File "/usr/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 358, in train
    loss = self._train_model(input_fn, hooks, saving_listeners)
  File "/usr/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1122, in _train_model
    return self._train_model_distributed(input_fn, hooks, saving_listeners)
  File "/usr/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1185, in _train_model_distributed
    self._config._train_distribute, input_fn, hooks, saving_listeners)
  File "/usr/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1254, in _actual_train_model_distributed
    self.config))
  File "/usr/lib/python3.7/site-packages/tensorflow/python/distribute/distribute_lib.py", line 1199, in call_for_each_replica
    return self._call_for_each_replica(fn, args, kwargs)
  File "/usr/lib/python3.7/site-packages/tensorflow/contrib/distribute/python/one_device_strategy.py", line 144, in _call_for_each_replica
    return fn(*args, **kwargs)
  File "/usr/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1112, in _call_model_fn
    model_fn_results = self._model_fn(features=features, **kwargs)
  File "/home/inno/Documents/course_2019/nlp/code/train_and_evaluate.py", line 62, in model_fn
    logits = model(inputs, targets)
  File "/home/inno/Documents/course_2019/nlp/code/model/transformer.py", line 69, in __call__
    encoder_outputs = self.encode(inputs, attention_bias)
  File "/home/inno/Documents/course_2019/nlp/code/model/transformer.py", line 104, in encode
    return self.encoder_stack(encoder_inputs, attention_bias, inputs_padding)
  File "/usr/lib/python3.7/site-packages/tensorflow/python/layers/base.py", line 491, in __call__
    self._set_scope(scope)
  File "/usr/lib/python3.7/site-packages/tensorflow/python/layers/base.py", line 295, in _set_scope
    scope, default_name=self._base_name) as captured_scope:
  File "/usr/lib/python3.7/site-packages/tensorflow/python/ops/variable_scope.py", line 2204, in __enter__
    return self._enter_scope_uncached()
  File "/usr/lib/python3.7/site-packages/tensorflow/python/ops/variable_scope.py", line 2305, in _enter_scope_uncached
    current_name_scope_name = current_name_scope.__enter__()
  File "/usr/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 6088, in __enter__
    return self._name_scope.__enter__()
  File "/usr/lib/python3.7/contextlib.py", line 112, in __enter__
    return next(self.gen)
  File "/usr/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 3988, in name_scope
    if not _VALID_SCOPE_NAME_REGEX.match(name):
TypeError: expected string or bytes-like object

标签: pythontensorflow

解决方案


推荐阅读