Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AttributeError: module 'tree' has no attribute 'map_structure' #5455

Open
rafadotnechi opened this issue Jun 8, 2024 · 1 comment
Open
Labels
bug Something isn't working

Comments

@rafadotnechi
Copy link

/!\ PLEASE INCLUDE THE FULL STACKTRACE AND CODE SNIPPET

Short description
Description of the bug.

Environment information

  • Operating System: Windows 10

  • Python version: Python 3.12.4

  • tensorflow-datasets/tfds-nightly tensorflow-datasets / version: Version: 4.9.6

  • tensorflow/tf-nightly version: tensorflow / Version: 2.16.1

  • Does the issue still exists with the last tfds-nightly package (pip install --upgrade tfds-nightly) ?

Yes

Reproduction instructions
load any dataset

import tensorflow_datasets as tfds
import tensorflow as tf

# Construct a tf.data.Dataset
ds = tfds.load('mnist', split='train', as_supervised=True, shuffle_files=True)

Stacktrace

Traceback (most recent call last):
  File "C:/Users/rafadotnechi/Documents/PythonDev/load_test.py", line 5, in <module>
    ds = tfds.load('mnist', split='train', as_supervised=True, shuffle_files=True)
  File "C:\Users\rafadotnechi\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_datasets\core\logging\__init__.py", line 176, in __call__
    return function(*args, **kwargs)
  File "C:\Users\rafadotnechi\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_datasets\core\load.py", line 647, in load
    _download_and_prepare_builder(dbuilder, download, download_and_prepare_kwargs)
  File "C:\Users\rafadotnechi\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_datasets\core\load.py", line 506, in _download_and_prepare_builder
    dbuilder.download_and_prepare(**download_and_prepare_kwargs)
  File "C:\Users\rafadotnechi\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_datasets\core\logging\__init__.py", line 176, in __call__
    return function(*args, **kwargs)
  File "C:\Users\rafadotnechi\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_datasets\core\dataset_builder.py", line 699, in download_and_prepare
    self._download_and_prepare(
  File "C:\Users\rafadotnechi\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_datasets\core\dataset_builder.py", line 1669, in _download_and_prepare
    split_infos = self._generate_splits(dl_manager, download_config)
  File "C:\Users\rafadotnechi\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_datasets\core\dataset_builder.py", line 1620, in _generate_splits
    split_generators = self._split_generators(  # pylint: disable=unexpected-keyword-arg
  File "C:\Users\rafadotnechi\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_datasets\image_classification\mnist.py", line 119, in _split_generators
    mnist_files = dl_manager.download_and_extract(
  File "C:\Users\rafadotnechi\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_datasets\core\download\download_manager.py", line 694, in download_and_extract
    return _map_promise(self._download_extract, url_or_urls)
  File "C:\Users\rafadotnechi\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_datasets\core\download\download_manager.py", line 790, in _map_promise
    all_promises = tree.map_structure(map_fn, all_inputs)  # Apply the function
  File "C:\Users\rafadotnechi\AppData\Local\Programs\Python\Python312\Lib\site-packages\etils\epy\lazy_imports_utils.py", line 109, in __getattr__
    return getattr(self._module, name)
AttributeError: module 'tree' has no attribute 'map_structure'

@rafadotnechi rafadotnechi added the bug Something isn't working label Jun 8, 2024
@srisridasari
Copy link

The error message indicates that the tree module does not have the map_structure attribute. This could happen if tree is not properly installed or if there’s an incompatible version.

Here’s a step-by-step approach to help resolve this issue:

  1. Check Dependencies: Ensure that the tree module (which is part of dm-tree) is correctly installed. You can install or upgrade it with the following command:
    pip install -U dm-tree

  2. Check Version Compatibility: Some versions of TensorFlow and TensorFlow Datasets may require a specific version of dm-tree. If you’ve updated TensorFlow or TensorFlow Datasets recently, it’s possible that dm-tree also needs an update. Make sure all packages are compatible by running:
    pip install --upgrade tensorflow tensorflow-datasets dm-tree

  3. Reinstall TensorFlow Datasets and TensorFlow: In case the issue persists, try reinstalling both tensorflow and tensorflow-datasets. This can help resolve any hidden compatibility issues or corrupted installations:
    pip uninstall tensorflow tensorflow-datasets dm-tree
    pip install tensorflow tfds-nightly dm-tree

  4. Check Alternative Imports: If the above steps don't resolve the issue, you could check for alternative ways to load the dataset:
    import tensorflow as tf
    import tensorflow_datasets as tfds

try:
ds = tfds.load('mnist', split='train', as_supervised=True, shuffle_files=True)
except AttributeError as e:
print(f"Error loading dataset: {e}")

  1. Restart the Environment: Sometimes, restarting your Python environment can help clear out any lingering issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants