猫狗分类识别python完整代码
时间: 2024-10-29 18:05:37 浏览: 106
在Python中,我们通常会使用深度学习框架如TensorFlow或PyTorch来进行图像分类任务,比如猫狗分类。这里提供一个基于Keras库(它简化了TensorFlow的使用)的基本示例,使用预训练的VGG16模型作为特征提取器,然后添加一层全连接层进行二分类:
```python
# 导入必要的库
from keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
from keras.layers import Dense, Flatten
from keras.models import Model
from keras.preprocessing.image import ImageDataGenerator
# 加载预训练的VGG16模型,去掉顶部的全连接层
vgg = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
# 添加新的全连接层和输出层
x = vgg.output
x = Flatten()(x)
predictions = Dense(1, activation='sigmoid')(x) # 二分类任务,所以激活函数选择sigmoid
model = Model(inputs=vgg.input, outputs=predictions)
# 预加载数据集
train_datagen = ImageDataGenerator(rescale=1./255) # 数据增强
val_datagen = ImageDataGenerator(rescale=1./255) # 测试集不变
train_generator = train_datagen.flow_from_directory(
'train_dir', # 训练集目录
target_size=(224, 224),
batch_size=32,
class_mode='binary') # 猫和狗的二分类
validation_generator = val_datagen.flow_from_directory(
'validation_dir', # 验证集目录
target_size=(224, 224),
batch_size=32,
class_mode='binary')
# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# 训练模型
model.fit(
train_generator,
steps_per_epoch=len(train_generator),
epochs=10, # 调整以达到更好的性能
validation_data=validation_generator,
validation_steps=len(validation_generator)
)
# 示例代码到这里,实际应用需要根据你的数据集路径、类别名称等做调整
```
阅读全文