以下是一个基于卷积神经网络 (CNN) 的猫狗识别模型的示例代码:

import tensorflow as tf
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

# 构建CNN模型
model = tf.keras.Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)),
    MaxPooling2D(2, 2),
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D(2, 2),
    Conv2D(128, (3, 3), activation='relu'),
    MaxPooling2D(2, 2),
    Conv2D(128, (3, 3), activation='relu'),
    MaxPooling2D(2, 2),
    Flatten(),
    Dense(512, activation='relu'),
    Dense(1, activation='sigmoid')
])

# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 加载猫狗训练集
train_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1/255.0)
train_generator = train_datagen.flow_from_directory(
    'train_dir',  # 训练集目录,包含猫和狗的子目录
    target_size=(150, 150),
    batch_size=20,
    class_mode='binary'
)

# 训练模型
model.fit(train_generator, epochs=20)

# 使用模型进行预测
test_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1/255.0)
test_generator = test_datagen.flow_from_directory(
    'test_dir',  # 测试集目录,包含猫和狗的子目录
    target_size=(150, 150),
    batch_size=20,
    class_mode='binary'
)

loss, accuracy = model.evaluate(test_generator)
print('Test accuracy:', accuracy)

在上述代码中,我们使用了四个卷积层和两个全连接层构建了一个简单的CNN模型。我们使用ImageDataGenerator从目录中加载训练集和测试集,并设置了数据增强和归一化。然后,我们使用fit方法训练模型,并使用evaluate方法评估模型在测试集上的性能。

请注意,你需要将train_dirtest_dir替换为你自己的训练集和测试集目录路径。训练集和测试集目录应该包含两个子目录,分别为猫和狗的图像数据。

这只是一个简单的示例,你可以根据需要调整模型的结构和参数,以提高识别效果。


原文地址: https://www.cveoy.top/t/topic/pcYY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录