NameError:名称“scipy”未在 Tensorflow 2.0 中定义

问题描述 投票:0回答:1

我正在尝试使用 CNN 训练一个模型,通过 Tensorflow 2.15.0 GPU 来识别猫和狗。但是,运行程序时,出现错误提示

NameError: name 'scipy' is not defined

数据生成器

数据集可以通过https://www.kaggle.com/datasets/tongpython/cat-and-dog/data

找到
train_datagen = ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)
# loading training data
train_generator = train_datagen.flow_from_directory(
    train_dir, 
    target_size=(64, 64), 
    batch_size=20, 
    class_mode='binary'
)
# loading validation data
test_generator = test_datagen.flow_from_directory(
    test_dir, 
    target_size=(64, 64), 
    batch_size=20, 
    class_mode='binary'
)

型号

模型的构建和编译如下所示,具有三个卷积层和两个神经层:

# Build
model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)), 
    tf.keras.layers.MaxPooling2D(2, 2), 
    tf.keras.layers.Conv2D(64, (3, 3), activation='relu'), 
    tf.keras.layers.MaxPooling2D(2, 2), 
    tf.keras.layers.Conv2D(128, (3, 3), activation='relu'), 
    tf.keras.layers.MaxPooling2D(2, 2), 
    tf.keras.layers.Flatten(), 
    tf.keras.layers.Dense(512, activation='relu'), 
    tf.keras.layers.Dense(1, activation='sigmoid')
])
# Compile
model.compile(loss='binary_crossentropy', 
              optimizer=Adam(learning_rate=1e-4), 
              metrics=['acc'])

培训

但是当程序运行这一行时,出现错误。

history = model.fit_generator(
    train_generator, 
    steps_per_epoch=400, 
    epochs=20, 
    validation_data=test_generator, 
    validation_steps=100, 
    verbose=2
)

错误如下图所示:

Traceback (most recent call last):
  File "/home/liu/tensor/demo2/test1.py", line 65, in <module>
    history = model.fit_generator(
  File "/home/liu/tensor/tensor_venv/lib/python3.10/site-packages/keras/src/engine/training.py", line 2913, in fit_generator
    return self.fit(
  File "/home/liu/tensor/tensor_venv/lib/python3.10/site-packages/keras/src/utils/traceback_utils.py", line 70, in error_handler
    raise e.with_traceback(filtered_tb) from None
  File "/home/liu/tensor/tensor_venv/lib/python3.10/site-packages/keras/src/preprocessing/image.py", line 2526, in apply_affine_transform
    if scipy is None:
NameError: name 'scipy' is not defined

我的想法

  • 我想知道是否需要手动安装
    'scipy'
    。但似乎这不应该发生。
  • 函数中的问题
    fit_generator()
    ,例如与Python 3.10不兼容
  • 图片格式不正确
python-3.x tensorflow deep-learning
1个回答
0
投票

您应该能够运行

pip install scipy
conda install scipy
来修复错误。

© www.soinside.com 2019 - 2024. All rights reserved.