ImportError: cannot import name '_validate_lengths'
Question:
I have started learning Tensorflow. I am using Pycharm and my environment is Ubuntu 16.04. I am following the tutorial. I cross check the nump. It is up-to-date. I don’t know the reason of this error.
from numpy.lib.arraypad import _validate_lengths
ImportError: cannot import name ‘_validate_lengths’
Need hint to resolve this error. Thank you.
import tensorflow as tf
from skimage import transform
from skimage import data
import matplotlib.pyplot as plt
import os
import numpy as np
from skimage.color import rgb2gray
import random
#listdir: This method returns a list containing the names of the entries in the directory given by path.
# Return True if path is an existing directory
def load_data(data_dir):
# Get all subdirectories of data_dir. Each represents a label.
directories = [d for d in os.listdir(data_dir)
if os.path.isdir(os.path.join(data_dir, d))]
# Loop through the label directories and collect the data in
# two lists, labels and images.
labels = []
images = []
for d in directories:
label_dir = os.path.join(data_dir, d)
file_names = [os.path.join(label_dir, f)
for f in os.listdir(label_dir)
if f.endswith(".ppm")]
for f in file_names:
images.append(data.imread(f))
labels.append(int(d))
return images, labels
ROOT_PATH = "/home/tahir/PhD Study/Traffic Signs Using Tensorflow/"
train_data_dir = os.path.join(ROOT_PATH, "TrafficSigns/Training")
test_data_dir = os.path.join(ROOT_PATH, "TrafficSigns/Testing")
images, labels = load_data(train_data_dir)
# Print the `images` dimensions
print(images.ndim)
# Print the number of `images`'s elements
print(images.size)
# Print the first instance of `images`
images[0]
Answers:
I updated my skimage package.
pip install --upgrade scikit-image
And the problem was solved. It’s a problem of version of Skimage, which is solved in 0.14.2. PLus, this version is quite stable.
Installing collected packages: dask, scikit-image
Found existing installation: dask 0.19.1
Uninstalling dask-0.19.1:
Successfully uninstalled dask-0.19.1
Found existing installation: scikit-image 0.13.0
Uninstalling scikit-image-0.13.0:
Successfully uninstalled scikit-image-0.13.0
Successfully installed dask-1.0.0 scikit-image-0.14.2
scikit-image 0.14.2 worked with numpy 1.16.3. I installed numpy first and then installed scikit image
I had the same error, I did the following steps:
uninstall scikit-image
pip uninstall scikit-image
or
conda uninstall scikit-image
and then
pip install scikit-image
or
conda install -c conda-forge scikit-image
pip install scikit-image==0.14.2 && pip install numpy==1.15
Ref: Here
Seems I also had the same issue due to two versions installed sametime.
I solved it by uninstalling scikit-image multiple times till none was left.
pip uninstall scikit-image
Then Reinstall:
pip uninstall scikit-image
It worked for me.
For me the magic dependency was:
pip install scikit-image==0.13.1
pip install numpy==1.15
For python 3.5 and python 3.6
upgrade scikit-image to latest, OR
downgrade NumPy to 1.15.
pip install -U scikit-image
or
pip install numpy==1.15
if the pip isn’t latest. You may need this:
python -m pip install --upgrade pip
refer to Getting ImportError: cannot import name ‘_validate_lengths’ #3906 .
I have started learning Tensorflow. I am using Pycharm and my environment is Ubuntu 16.04. I am following the tutorial. I cross check the nump. It is up-to-date. I don’t know the reason of this error.
from numpy.lib.arraypad import _validate_lengths
ImportError: cannot import name ‘_validate_lengths’
Need hint to resolve this error. Thank you.
import tensorflow as tf
from skimage import transform
from skimage import data
import matplotlib.pyplot as plt
import os
import numpy as np
from skimage.color import rgb2gray
import random
#listdir: This method returns a list containing the names of the entries in the directory given by path.
# Return True if path is an existing directory
def load_data(data_dir):
# Get all subdirectories of data_dir. Each represents a label.
directories = [d for d in os.listdir(data_dir)
if os.path.isdir(os.path.join(data_dir, d))]
# Loop through the label directories and collect the data in
# two lists, labels and images.
labels = []
images = []
for d in directories:
label_dir = os.path.join(data_dir, d)
file_names = [os.path.join(label_dir, f)
for f in os.listdir(label_dir)
if f.endswith(".ppm")]
for f in file_names:
images.append(data.imread(f))
labels.append(int(d))
return images, labels
ROOT_PATH = "/home/tahir/PhD Study/Traffic Signs Using Tensorflow/"
train_data_dir = os.path.join(ROOT_PATH, "TrafficSigns/Training")
test_data_dir = os.path.join(ROOT_PATH, "TrafficSigns/Testing")
images, labels = load_data(train_data_dir)
# Print the `images` dimensions
print(images.ndim)
# Print the number of `images`'s elements
print(images.size)
# Print the first instance of `images`
images[0]
I updated my skimage package.
pip install --upgrade scikit-image
And the problem was solved. It’s a problem of version of Skimage, which is solved in 0.14.2. PLus, this version is quite stable.
Installing collected packages: dask, scikit-image
Found existing installation: dask 0.19.1
Uninstalling dask-0.19.1:
Successfully uninstalled dask-0.19.1
Found existing installation: scikit-image 0.13.0
Uninstalling scikit-image-0.13.0:
Successfully uninstalled scikit-image-0.13.0
Successfully installed dask-1.0.0 scikit-image-0.14.2
scikit-image 0.14.2 worked with numpy 1.16.3. I installed numpy first and then installed scikit image
I had the same error, I did the following steps:
uninstall scikit-image
pip uninstall scikit-image
or
conda uninstall scikit-image
and then
pip install scikit-image
or
conda install -c conda-forge scikit-image
pip install scikit-image==0.14.2 && pip install numpy==1.15
Ref: Here
Seems I also had the same issue due to two versions installed sametime.
I solved it by uninstalling scikit-image multiple times till none was left.
pip uninstall scikit-image
Then Reinstall:
pip uninstall scikit-image
It worked for me.
For me the magic dependency was:
pip install scikit-image==0.13.1
pip install numpy==1.15
For python 3.5 and python 3.6
upgrade scikit-image to latest, OR
downgrade NumPy to 1.15.
pip install -U scikit-image
or
pip install numpy==1.15
if the pip isn’t latest. You may need this:
python -m pip install --upgrade pip
refer to Getting ImportError: cannot import name ‘_validate_lengths’ #3906 .