tensorflow / tensor2tensor

Library of deep learning models and datasets designed to make deep learning more accessible and accelerate ML research.
Apache License 2.0
15.38k stars 3.48k forks source link

Question about registration of a new problem #1741

Open dariagrechishnikova opened 4 years ago

dariagrechishnikova commented 4 years ago

Hi! I registered my own problem using the description: https://github.com/tensorflow/tensor2tensor/blob/master/docs/walkthrough.md#adding-your-own-components When I ran t2t-trainer --t2t_user_dir= --registry_help I found my problem name in a 'Problem' category. Training and predicting with Transformer model worked fine. However when I was trying to vizualize attention using the code https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/visualization/TransformerVisualization.ipynb the error appeared telling that problem had never been registered. Also when I ran registry.list_problems() I didn't see my problem in a list. Could someone please tell me what am I doing wrong?

...

Environment information

Google Colab



$ pip freeze | grep tensor

mesh-tensorflow==0.1.4
tensor2tensor==1.13.4
tensorboard==1.14.0
tensorboardcolab==0.0.22
tensorflow==1.14.0
tensorflow-datasets==1.3.0
tensorflow-estimator==1.14.0
tensorflow-gan==2.0.0
tensorflow-hub==0.7.0
tensorflow-metadata==0.15.0
tensorflow-privacy==0.2.2
tensorflow-probability==0.7.0

Also tried
mesh-tensorflow==0.1.4
tensor2tensor==1.14.1
tensorboard==1.15.0
tensorboardcolab==0.0.22
tensorflow==1.15.0
tensorflow-datasets==1.3.0
tensorflow-estimator==1.15.1
tensorflow-gan==2.0.0
tensorflow-hub==0.7.0
tensorflow-metadata==0.15.0
tensorflow-privacy==0.2.2
tensorflow-probability==0.7.0

$ python -V
Python 3.6.8

# Error logs:
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/tensor2tensor/utils/registry.py in problem(problem_name, **kwargs)
    508   try:
--> 509     return Registries.problems[spec.base_name](
    510         was_copy=spec.was_copy, was_reversed=spec.was_reversed)

8 frames
/usr/local/lib/python3.6/dist-packages/tensor2tensor/utils/registry.py in __getitem__(self, key)
    253       raise KeyError("%s never registered with registry %s. Available:\n %s" %
--> 254                      (key, self.name, display_list_by_prefix(sorted(self), 4)))
    255     value = self._registry[key]

KeyError: 'pl_generation never registered with registry problems. Available:\n     algorithmic:\n      * algorithmic_addition_binary40\n      * algorithmic_addition_decimal40\n      * algorithmic_cipher_shift200\n      * algorithmic_cipher_shift5\n      * algorithmic_cipher_vigenere200\n      * algorithmic_cipher_vigenere5\n      * algorithmic_identity_binary40\n      * algorithmic_identity_decimal40\n      * algorithmic_math_deepmind_all\n      * algorithmic_math_two_variables\n      * algorithmic_multiplication_binary40\n      * algorithmic_multiplication_decimal40\n      * algorithmic_reverse_binary40\n      * algorithmic_reverse_binary40_test\n      * algorithmic_reverse_decimal40\n      * algorithmic_reverse_nlplike32k\n      * algorithmic_reverse_nlplike8k\n      * algorithmic_shift_decimal40\n      * algorithmic_sort_problem\n    audio:\n      * audio_timit_characters_tune\n      * audio_timit_tokens8k_test\n      * audio_timit_tokens8k_tune\n    babi:\n      * babi_qa_concat_all_tasks_10k\n      * babi_qa_concat_all_tasks_1k\n      * babi_qa_concat_task10_10k\n      * babi_qa_concat_task10_1k\n      * babi_qa_concat_task11_10k\n      * babi_qa_concat_task11_1k\n      * babi_qa_concat_task12_10k\n      * babi_qa_concat_task12_1k\n      * babi_qa_concat_task13_10k\n      * babi_qa_concat_task13_1k\n      * babi_qa_concat_task14_10k\n      * babi_qa_concat_task14_1k\n      * babi_qa_concat_task15_10k\n      * babi_qa_concat_task15_1k\n ...

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-8-ad451a1b53fd> in <module>()
      1 
----> 2 visualizer = visualization.AttentionVisualizer(hparams_set, model_name, data_dir, problem_name, beam_size=1)

/usr/local/lib/python3.6/dist-packages/tensor2tensor/visualization/visualization.py in __init__(self, hparams_set, model_name, data_dir, problem_name, beam_size)
     38       self, hparams_set, model_name, data_dir, problem_name, beam_size=1):
     39     inputs, targets, samples, att_mats = build_model(
---> 40         hparams_set, model_name, data_dir, problem_name, beam_size=beam_size)
     41 
     42     # Fetch the problem

/usr/local/lib/python3.6/dist-packages/tensor2tensor/visualization/visualization.py in build_model(hparams_set, model_name, data_dir, problem_name, beam_size)
    132   """
    133   hparams = trainer_lib.create_hparams(
--> 134       hparams_set, data_dir=data_dir, problem_name=problem_name)
    135   translate_model = registry.model(model_name)(
    136       hparams, tf.estimator.ModeKeys.EVAL)

/usr/local/lib/python3.6/dist-packages/tensor2tensor/utils/hparams_lib.py in create_hparams(hparams_set, hparams_overrides_str, data_dir, problem_name, hparams_path)
     56     hparams = hparams.parse(hparams_overrides_str)
     57   if problem_name:
---> 58     add_problem_hparams(hparams, problem_name)
     59   return hparams
     60 

/usr/local/lib/python3.6/dist-packages/tensor2tensor/utils/hparams_lib.py in add_problem_hparams(hparams, problem_name_or_instance)
     96     problem = problem_name_or_instance
     97   else:
---> 98     problem = registry.problem(problem_name_or_instance)
     99   p_hparams = problem.get_hparams(hparams)
    100   hparams.problem = problem

/usr/local/lib/python3.6/dist-packages/tensor2tensor/utils/registry.py in problem(problem_name, **kwargs)
    511   except KeyError:
    512     # If name is not found in base problems then try creating an env problem
--> 513     return env_problem(problem_name, **kwargs)
    514 
    515 

/usr/local/lib/python3.6/dist-packages/tensor2tensor/utils/registry.py in env_problem(env_problem_name, **kwargs)
    525   """
    526 
--> 527   ep_cls = Registries.env_problems[env_problem_name]
    528   ep = ep_cls()
    529   ep.initialize(**kwargs)

/usr/local/lib/python3.6/dist-packages/tensor2tensor/utils/registry.py in __getitem__(self, key)
    252     if key not in self:
    253       raise KeyError("%s never registered with registry %s. Available:\n %s" %
--> 254                      (key, self.name, display_list_by_prefix(sorted(self), 4)))
    255     value = self._registry[key]
    256     return self._value_transformer(key, value)

KeyError: 'pl_generation never registered with registry env_problems. Available:\n     reacher:\n      * reacher_env_problem\n    tic:\n      * tic_tac_toe_env_problem'
Hamza5 commented 4 years ago

If you can't find any model, that's because you didn't import tensor2tensor.models. I know, it is not logical to import a module that we don't need to use, but it seems that this library was not well designed so you have to do this. For more informations check my closed issue #1742.

aswin-giridhar commented 4 years ago

@dariagrechishnikova Were you able to resolve the issue?

dariagrechishnikova commented 4 years ago

@SAswinGiridhar Unfortunately no