Fork me on GitHub

使用卷积神经网络实现猫和狗的预测

1、将图片数据分为训练集和验证集,训练集中猫和狗各300张图片,验证集中猫和狗各200张图片。

2、构建一个神经网络模型,并使用划分好的训练集数据训练模型,使用验证集的数据验证模型,训练迭代30次,建议使用生成器。

3、获取训练过程中的训练精度、验证精度,并使用matplotlib来绘制精度变化曲线,要求模型的验证精度达到80%以上(注意不是训练精度),可以使用数据增强、预训练的卷积神经网络等方法。

4、使用训练好的模型做猫狗预测,至少预测2张图片(有猫有狗),只需要在控制台中打印输出预测的结果即可。

5、撰写实验报告,将实验代码、预测结果和绘制精度变化曲线截图粘贴到实验报告中。

 

相关步骤:

  1、导入相关库

    from keras.preprocessing.image import ImageDataGenerator

    import pathlib

    from tensorflow import keras

    from keras import layers

 

    2、加载数据

    # 加载数据

    train_idg = ImageDataGenerator(rescale=1. / 255)

    valid_idg = ImageDataGenerator(rescale=1. / 255)

    new_base_dir = pathlib.Path("D:\大学\大学作业\学习文件\python深度学习\实验三  \cats_vs_dogs_small")

    train_dataset = train_idg.flow_from_directory(

        new_base_dir / "train",

        target_size=(180, 180),

        batch_size=6,

    class_mode='binary')

    validation_dataset = valid_idg.flow_from_directory(

        new_base_dir / "validation",

        target_size=(180, 180),

        batch_size=6,

        class_mode='binary')

    可以查看数据

    for i in train_dataset:

    print(i)

    查看数据格式

    for data_batch, labels_batch in train_dataset:

        print("data batch shape:", data_batch.shape)

        print("labels batch shape:", labels_batch.shape)

        break

 

    3、构建模型

    from keras import models

    from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

    model = models.Sequential()

    model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(180, 180, 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()

 

    4、编译模型

    # 编译模型

    model.compile(loss="binary_crossentropy",

              optimizer="rmsprop",

              metrics=["accuracy"])

 

    5、训练模型

    history = model.fit(

train_dataset,epochs=30,validation_data=validation_dataset,steps_per_epoch=100,val    idation_steps=50)

 

    6、训练精度,验证精度的可视化,绘制折线图

    import matplotlib.pyplot as plt

    plt.rcParams['font.sans-serif'] = ['SimHei']

    train_acc = history.history.get('accuracy')

    valid_acc = history.history.get('val_accuracy')

    data_x = range(1, len(train_acc) + 1)

    plt.plot(data_x, train_acc, color='red', label='训练精度')

    plt.plot(data_x, valid_acc, color='green', label='验证精度')

    plt.legend()

    可视化结果

实验分析与结论

    使用卷积神经网络实现猫和狗的预测,使用的是二分类,因此使用'sigmoid'来进行对类别的分类。该实验也是要按照加载数据、构建深度学习模型、训练模型(需要添加验证集)、预测的步骤来进行。此实验所训练模型数据较低,在设置实验训练数据大小时需要匹配。

posted @   慧眼识辰  阅读(209)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
1
点击右上角即可分享
微信分享提示