Tensorflow CNN: Image transformations require SciPy. Install SciPy

Viewed 253

I am training a CNN in a Jupyter notebook using tensorflow and getting the following error: ImportError: Image transformations require SciPy. Install SciPy.

I have installed scipy using the following command and have confirmed that it is installed:

!pip install scipy
import scipy

I have 3 categorical classes I am classifying images as and my code is:

print(len(os.listdir('C:/images/cvd/Training/class1')))
print(len(os.listdir('C:/images/cvd/Testing/class1')))
print(len(os.listdir('C:/images/cvd/Training/class2')))
print(len(os.listdir('C:/images/cvd/Testing/class2')))
print(len(os.listdir('C:/images/cvd/Training/class3')))
print(len(os.listdir('C:/images/cvd/Testing/class3')))

1400 156 1022 114 1403 156

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(64, (3, 3), activation='relu', input_shape=(80, 80, 1)),
    tf.keras.layers.MaxPooling2D(2, 2),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),
    tf.keras.layers.MaxPooling2D(2, 2),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(3, activation='softmax')
])

# compile model
model.compile(loss='sparse_categorical_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])
# pre process images
TRAINING_DIR = 'C:/images/cvd/Training/'
train_datagen = ImageDataGenerator(rescale=1.0 / 255)

train_generator = train_datagen.flow_from_directory(TRAINING_DIR,
                                                    target_size=(80, 80),
                                                    batch_size=24,
                                                    class_mode='categorical')
VALIDATION_DIR = 'C:/images/cvd/Testing/'
validation_datagen = ImageDataGenerator(rescale=1.0 / 255)
validation_generator = validation_datagen.flow_from_directory(VALIDATION_DIR,
                                                              target_size=(80, 80),
                                                              batch_size=24,
                                                              class_mode='categorical')

history = model.fit(train_generator, epochs=20, steps_per_epoch=10,
                    validation_data=validation_generator, validation_steps=4)
1 Answers

I got same problem. But I solved problem by below.. first of all, my library version *numpy : 1.21.5 *scipy : 1.7.3 *tensorflow-gpu : 2.8.0

I moved to the error lines.. in my case affine_transformation.py Maybe error line is 20 ~22, I checked scipy installed, ndimage existed. So, I wrote code outside of try~catch,

Import scipy and ndimage!!

import scipy
from scipy import ndimage
try:
    import scipy
    print(scipy.__version__)
    #scipy.ndimage cannot be accessed until explicitly imported
    print(ndimage.affine_transform.__doc__)
    from scipy import ndimage

except ImportError as e:
    print('test............',e)
    scipy = None

model worked.

Related