使用TensorFlow和Keras创建猫狗图片深度学习分类器

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

使用TensorFlow和Keras创建猫狗图片深度学习分类器

在本文中,我们将使用tensorflowkeras创建一个图像分类器,可以区分猫和狗的图像。为了做到这一点,我们将使用tensorflow数据集中的cats_vs_dogs数据集。该数据集由25000张打过标签的猫和狗的图像组成,其中80%的图像用于训练,10%用于验证,10%用于测试。

加载数据

我们从使用TensorFlow Datasets加载数据集开始。将数据集拆分为训练集、验证集和测试集,分别占数据的80%、10%和10%,并定义一个函数来显示数据集中的一些样本图像。

import tensorflow as tfimport matplotlib.pyplot as pltimport tensorflow_datasets as tfds# 加载数据(train_data, validation_data, test_data), info = tfds.load('cats_vs_dogs', split=['train[:80%]', 'train[80%:90%]', 'train[90%:]'], with_info=True, as_supervised=True)# 获取图像的标签label_names = info.features['label'].names# 定义一个函数来显示一些样本图像plt.figure(figsize=(10, 10))for i, (image, label) in enumerate(train_data.take(9)):ax = plt.subplot(3, 3, i + 1)plt.imshow(image)plt.title(label_names[label])plt.axis('off')

使用TensorFlow和Keras创建猫狗图片深度学习分类器

预处理数据

在训练模型之前,需要对数据进行预处理。将把图片的大小调整为150×150像素的统一尺寸,将像素值归一化为0和1之间,并对数据进行批处理,这样就可以将其分批导入模型中。

IMG_SIZE = 150
def format_image(image, label):image = tf.cast(image, tf.float32) / 255.0# Normalize the pixel valuesimage = tf.image.resize(image, (IMG_SIZE, IMG_SIZE))# Resize to the desired sizereturn image, labelbatch_size = 32train_data = train_data.map(format_image).shuffle(1000).batch(batch_size)validation_data = validation_data.map(format_image).batch(batch_size)test_data = test_data.map(format_image).batch(batch_size)

使用TensorFlow和Keras创建猫狗图片深度学习分类器

搭建模型

本文将使用预先训练好的MobileNet V2模型作为基础模型,并在其中添加一个全局平均池化层和一个紧密层来进行分类。本文将冻结基础模型的权重,以便在训练期间只更新顶层的权重。

base_model = tf.keras.applications.MobileNetV2(input_shape=(IMG_SIZE, IMG_SIZE, 3), include_top=False, weights='imagenet')base_model.trainable = False
global_average_layer = tf.keras.layers.GlobalAveragePooling2D()prediction_layer = tf.keras.layers.Dense(1)model = tf.keras.Sequential([base_model,global_average_layer,prediction_layer])model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=0.0001),loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),metrics=['accuracy'])

训练模型

本文将对模型进行3个周期的训练,并在每个周期之后在验证集上对其进行验证。我们将在训练后保存模型,这样就可以在以后的测试中使用它。

global_average_layer = tf.keras.layers.GlobalAveragePooling2D()prediction_layer = tf.keras.layers.Dense(1)model = tf.keras.Sequential([base_model,global_average_layer,prediction_layer])model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=0.0001),loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),metrics=['accuracy'])
history = model.fit(train_data,epochs=3,validation_data=validation_data)

使用TensorFlow和Keras创建猫狗图片深度学习分类器

模型历史

如果想知道Mobilenet V2层是如何工作的,如下图所示是该层的一个结果。

AI图像编辑器 AI图像编辑器

使用文本提示编辑、变换和增强照片

AI图像编辑器 46 查看详情 AI图像编辑器

使用TensorFlow和Keras创建猫狗图片深度学习分类器

评估模型

训练完成后将在测试集上评估该模型,看看它在新数据上的表现如何。

loaded_model = tf.keras.models.load_model('cats_vs_dogs.h5')test_loss, test_accuracy = loaded_model.evaluate(test_data)
print('Test accuracy:', test_accuracy)

进行预测

最后,本文将使用该模型对测试集中的一些样本图像进行预测,并显示结果。

for image , _ in test_.take(90) : passpre = loaded_model.predict(image)plt.figure(figsize = (10 , 10))j = Nonefor value in enumerate(pre) : plt.subplot(7,7,value[0]+1)plt.imshow(image[value[0]])plt.xticks([])plt.yticks([])if value[1] > pre.mean() :j = 1color = 'blue' if j == _[value[0]] else 'red'plt.title('dog' , color = color)else : j = 0color = 'blue' if j == _[value[0]] else 'red'plt.title('cat' , color = color)plt.show()

使用TensorFlow和Keras创建猫狗图片深度学习分类器

大功告成!我们通过使用TensorFlow和Keras创建了一个图像分类器,可以区分猫和狗的图像。通过一些调整和微调,也可以将这种方法应用于其他图像分类问题。

以上就是使用TensorFlow和Keras创建猫狗图片深度学习分类器的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/547025.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月9日 18:13:36
下一篇 2025年11月9日 18:15:09

相关推荐

  • 解决Keras模型中Ellipsis对象序列化错误的教程

    本文旨在解决在tensorflow/keras中使用预训练模型时,将`keras.applications.vgg16.preprocess_input`直接集成到模型中并结合`modelcheckpoint`回调时遇到的`typeerror: cannot serialize object ell…

    2025年12月14日
    000
  • 理解TensorFlow中变量的零初始化与优化更新机制

    TensorFlow中变量的零初始化是一种常见的实践,它仅作为参数的起始点。这些变量的实际值通过优化器在训练过程中根据损失函数和输入数据进行迭代更新,从而从初始的零值调整到能够优化模型性能的非零值。若没有定义和运行优化器,变量将始终保持其初始值。 在构建机器学习模型时,我们经常需要定义一些可学习的参…

    2025年12月14日
    000
  • Python多线程在机器学习中的应用 Python多线程模型训练加速技巧

    多线程在机器学习中无法加速CPU密集型模型训练,主要受限于Python的GIL机制。然而,在数据预处理、I/O密集型任务及模型推理阶段,并发线程可显著提升效率。例如,使用ThreadPoolExecutor并行加载图像或解析小文件,能有效减少等待时间;在Web服务部署中,多线程可同时响应多个推理请求…

    2025年12月14日
    000
  • Keras安装错误dm-tree:Python 3.12兼容性及解决方案

    本文旨在解决keras安装过程中遇到的`dm-tree`构建失败问题,特别是当使用python 3.12版本时。核心问题在于某些keras依赖包与最新python版本存在兼容性障碍。解决方案是建议用户降级python版本至3.11.x,并通过详细步骤指导如何安全地进行版本切换和keras安装,强调虚…

    2025年12月14日
    000
  • 解决Keras安装失败:Python版本兼容性与dm-tree构建问题

    本文针对使用`pip install keras`时遇到的`dm-tree`构建错误,特别是涉及`cmake`和`filenotfounderror`的安装失败问题,提供了详细的解决方案。核心方法是降级python版本,因为keras及其依赖(如tensorflow)可能尚未完全兼容最新的pytho…

    2025年12月14日
    000
  • PyTorch参数更新不明显?深度解析学习率与梯度尺度的影响

    在使用PyTorch进行模型训练时,开发者有时会遇到参数看似没有更新的问题,即使已正确调用优化器。本文将深入探讨这一常见现象,揭示其背后往往是学习率设置过低,导致参数更新幅度相对于参数自身值或梯度而言微不足道。我们将通过代码示例和详细分析,演示如何诊断并解决此类问题,强调学习率在优化过程中的关键作用…

    2025年12月14日
    000
  • PyTorch参数不更新:诊断与解决低学习率问题

    在pytorch模型训练中,参数不更新是一个常见问题,通常是由于学习率设置过低,导致每次迭代的参数更新幅度远小于参数自身的量级或梯度幅度。本文将深入分析这一现象,并通过示例代码演示,解释如何通过调整学习率来有效解决参数停滞不前的问题,并提供优化学习率的实践建议。 PyTorch参数不更新的常见原因与…

    2025年12月14日
    000
  • PyTorch参数不更新:深入理解学习率与梯度尺度的影响

    在pytorch模型训练中,参数看似不更新是常见问题。本文将深入探讨这一现象的根本原因,即学习率、梯度大小与参数自身尺度的不匹配。我们将通过一个具体代码示例,分析为何微小的学习率结合相对较小的梯度会导致参数更新量微乎其微,从而在视觉上造成参数未更新的假象。文章将提供解决方案,并强调在优化过程中调试学…

    2025年12月14日
    000
  • Python入门的机器学习入门_Python入门AI学习的第一步骤

    首先搭建Python开发环境并安装Anaconda,接着通过pip安装numpy、pandas、scikit-learn等核心库,然后加载鸢尾花数据集进行探索性分析,再使用K近邻算法构建分类模型,最后用准确率和分类报告评估模型性能。 如果您希望开始使用Python进行机器学习,但对如何起步感到困惑,…

    2025年12月14日
    000
  • Python爬虫如何应对验证码_Python爬虫处理验证码的常见解决方案

    针对Python爬虫中的验证码问题,需根据类型选择合理方案:1. 图像验证码可采用OCR工具如Tesseract配合图像预处理,或使用深度学习模型及第三方打码平台提高识别率;2. 滑动验证码通过Selenium模拟操作,结合OpenCV定位缺口并生成人类行为特征的滑动轨迹,规避反爬机制;3. 点选验…

    2025年12月14日
    000
  • 理解TensorFlow变量的零初始化与优化器的作用

    在TensorFlow中,`tf.Variable`的初始值(即使是零向量)仅是模型参数的起点。这些参数在模型训练过程中,通过优化器根据定义的损失函数和训练数据进行迭代更新。零初始化本身并不会阻止模型学习,因为优化器的目标是调整这些参数以最小化损失,从而使其从初始的零值演变为能够捕捉数据模式的非零值…

    2025年12月14日
    000
  • 持久化ChromaDB向量嵌入:避免重复计算的教程

    本教程详细介绍了如何使用chromadb的`persist_directory`功能来高效地保存和加载向量嵌入数据库,从而避免重复计算。通过指定一个持久化目录,用户可以轻松地将生成的嵌入结果存储到本地文件系统,并在后续操作中直接加载,极大地节省了时间和计算资源。文章提供了清晰的代码示例和关键注意事项…

    2025年12月14日
    000
  • 多模态数据融合:EfficientNetB0与LSTM模型的构建与训练实践

    本教程详细阐述如何结合efficientnetb0处理图像数据和lstm处理序列数据,构建一个多输入深度学习模型。文章聚焦于解决模型输入形状不匹配的常见错误,并提供正确的模型构建流程、代码示例,以及关于损失函数选择和模型可视化调试的专业建议,旨在帮助开发者有效实现多模态数据融合任务。 在深度学习领域…

    2025年12月14日
    000
  • TensorFlow中tf.Variable的零初始化与优化器的工作原理

    本文深入探讨tensorflow中`tf.variable`使用零向量作为初始值的工作机制。我们将解释为何模型在初始化时系数为零会产生零输出,并阐明优化器如何通过迭代更新这些初始零值,使其在训练过程中逐渐收敛到能够有效拟合数据的非零参数,从而实现模型学习。 1. tf.Variable与参数初始化 …

    2025年12月14日
    000
  • Python内存不足错误MemoryError产生原因与应对策略

    MemoryError因程序内存超限导致,常见于大数据处理、低效数据结构、内存泄漏或第三方库临时占用;可通过分批处理、生成器、及时释放、高效数据类型及监控工具优化,核心是按需加载与及时释放。 Python中出现MemoryError,通常是因为程序试图分配的内存超过了系统或进程可用的内存总量。这个错…

    2025年12月14日
    000
  • ChromaDB向量嵌入持久化:高效保存与加载策略

    本教程详细介绍了如何利用chromadb的`persist_directory`功能,有效地保存和加载向量嵌入数据库,从而避免重复计算。通过简单的代码示例,您将学会如何在创建chromadb实例时指定持久化目录,以及如何在后续操作中从该目录加载已保存的数据库,确保数据一致性和计算效率。这种方法是管理…

    2025年12月14日
    000
  • Keras模型输出形状与DQN集成:深入理解InputLayer的维度配置

    本教程深入探讨keras模型在与强化学习dqn智能体集成时,因`inputlayer`配置不当导致的输出形状错误。通过分析`input_shape=(1, 4)`与`input_shape=(4,)`的区别,我们将揭示如何正确定义模型输入,以避免`valueerror: model output &…

    2025年12月14日
    000
  • PythonTensorFlow怎么用_PythonTensorFlow框架使用方法与实例

    首先安装TensorFlow并验证版本,然后加载MNIST数据集并归一化;接着用Sequential API构建含Flatten、Dense、Dropout层的模型,编译时指定adam优化器和交叉熵损失;训练5轮后评估性能,也可用GradientTape自定义训练;最后保存为HDF5文件供加载使用。…

    2025年12月14日
    000
  • 理解TensorFlow变量的初始零值与优化机制

    本文深入探讨tensorflow中变量初始值设置为零的原理及其在模型优化过程中的作用。我们将阐明这些零值仅作为参数的起始点,并通过优化器在训练过程中根据损失函数和数据逐步更新为非零值,从而实现模型学习。文章将结合代码示例,解释优化器如何驱动变量从初始状态向最优解演进。 TensorFlow变量与初始…

    2025年12月14日
    000
  • Keras ImageDataGenerator 常见警告与正确配置指南

    本文旨在解决keras `imagedatagenerator`在使用`featurewise_center`等特性时可能出现的`userwarning`,并纠正因参数位置误用导致的配置错误。核心内容是明确`imagedatagenerator`构造函数的参数顺序,特别是第一个参数`featurew…

    2025年12月14日
    000

发表回复

登录后才能评论
关注微信