猫狗识别代码
时间: 2023-08-09 17:05:04 浏览: 157
猫狗识别是计算机视觉中的一个经典问题。一般采用深度学习模型进行解决,其中卷积神经网络(Convolutional Neural Network,CNN)是常用的模型之一。
以下是一个简单的猫狗识别代码示例:
```
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
# 定义数据集路径
train_dir = "data/train"
validation_dir = "data/validation"
# 数据预处理
train_datagen = ImageDataGenerator(rescale=1./255)
validation_datagen = ImageDataGenerator(rescale=1./255)
# 加载训练集和验证集数据
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(150, 150),
batch_size=20,
class_mode='binary')
validation_generator = validation_datagen.flow_from_directory(
validation_dir,
target_size=(150, 150),
batch_size=20,
class_mode='binary')
# 定义模型
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(150, 150, 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.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')
])
# 编译模型
model.compile(loss='binary_crossentropy',
optimizer=tf.keras.optimizers.RMSprop(lr=1e-4),
metrics=['acc'])
# 训练模型
history = model.fit_generator(
train_generator,
steps_per_epoch=100,
epochs=30,
validation_data=validation_generator,
validation_steps=50,
verbose=2)
# 保存模型
model.save("cat_dog.h5")
```
这个代码使用了 TensorFlow 和 Keras 库,使用了数据增强技术,通过卷积神经网络对猫狗图片进行分类。最后将训练好的模型保存为 cat_dog.h5 文件。
阅读全文