我正在尝试使用 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不兼容您应该能够运行
pip install scipy
或 conda install scipy
来修复错误。