猫狗图片识别python代码
时间: 2023-08-30 12:05:49 浏览: 58
猫狗识别-python程序
5星 · 资源好评率100%
以下是一个基于 Python 的猫狗图像分类的代码示例,使用了 TensorFlow 框架和 Keras 库:
```python
import os
import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, MaxPooling2D, Flatten
# 定义参数
train_dir = './train' # 训练集文件夹
test_dir = './test' # 测试集文件夹
img_width = 150 # 图像宽度
img_height = 150 # 图像高度
batch_size = 32 # 批次大小
epochs = 50 # 训练轮数
# 数据预处理
train_datagen = ImageDataGenerator(rescale=1./255) # 生成训练数据
test_datagen = ImageDataGenerator(rescale=1./255) # 生成测试数据
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='binary')
test_generator = test_datagen.flow_from_directory(
test_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='binary')
# 构建模型
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(img_width, img_height, 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(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.summary()
# 编译模型
model.compile(loss='binary_crossentropy',
optimizer=tf.keras.optimizers.RMSprop(lr=1e-4),
metrics=['accuracy'])
# 训练模型
history = model.fit(
train_generator,
steps_per_epoch=100,
epochs=epochs,
validation_data=test_generator,
validation_steps=50)
# 评估模型
test_loss, test_acc = model.evaluate(test_generator, steps=50)
print('Test accuracy:', test_acc)
```
代码中使用了卷积神经网络(CNN)模型,对猫狗图像进行分类。数据预处理使用了 Keras 中的 ImageDataGenerator 类,用于生成训练和测试数据集。最后,使用 fit() 函数训练模型,并使用 evaluate() 函数评估模型性能。
阅读全文