猫狗图识别python代码
时间: 2023-08-09 15:05:10 浏览: 94
以下是一个使用Python和Keras库实现猫狗图像分类的代码示例:
import numpy as np
import keras
from keras.models import Sequential
from keras.layers import Dense, Conv2D, MaxPooling2D, Flatten
from keras.preprocessing.image import ImageDataGenerator
# 创建一个顺序模型
model = Sequential()
# 添加卷积层
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)))
# 添加最大池化层
model.add(MaxPooling2D((2, 2)))
# 添加另一个卷积层和最大池化层
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
# 添加另一个卷积层和最大池化层
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
# 将数据展平
model.add(Flatten())
# 添加全连接层
model.add(Dense(128, activation='relu'))
# 添加输出层
model.add(Dense(1, activation='sigmoid'))
# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# 创建数据增强对象
train_datagen = ImageDataGenerator(
rescale=1./255, # 像素值缩放到0-1之间
shear_range=0.2, # 随机剪切变换
zoom_range=0.2, # 随机缩放变换
horizontal_flip=True) # 水平翻转变换
test_datagen = ImageDataGenerator(rescale=1./255)
# 加载训练数据集和测试数据集
train_set = train_datagen.flow_from_directory(
'dataset/training_set',
target_size=(64, 64),
batch_size=32,
class_mode='binary')
test_set = test_datagen.flow_from_directory(
'dataset/test_set',
target_size=(64, 64),
batch_size=32,
class_mode='binary')
# 训练模型
model.fit(
train_set,
steps_per_epoch=8000,
epochs=25,
validation_data=test_set,
validation_steps=2000)
# 保存模型
model.save('cat_dog_classifier.h5')
此代码使用了卷积神经网络来训练猫和狗的图像分类器,其中ImageDataGenerator对象用于对训练数据进行数据增强。代码中的数据集应为两个文件夹,分别为'training_set'和'test_set',每个文件夹中包含两个子文件夹,分别为猫和狗。
相关推荐

















