【Python深度学习】Tensorflow对半环形数据分类、手写数字识别、猫狗识别实战(附源码)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 【Python深度学习】Tensorflow对半环形数据分类、手写数字识别、猫狗识别实战(附源码)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~

一、半环形数据分类

Tensorflow是常见流行的深度学习平台,下面利用它来对半环形数据集进行分类

首先产生半环形数据集

接着开始训练模型 总共训练三十次 可以看到损失在逐渐降低,精确度在逐渐提高

结果展示如下, 可以看出大致可以拟合出一条折线将数据集分为两个区域 类似于kmeans算法

部分代码如下

# encoding: utf-8
import numpy as np
from sklearn.datasets import make_moons
import tensorflow as tf
from sklearn.model_selection import train_test_split
from tensorflow.keras import layers, Sequential, optimizers, losses, metrics
from tensorflow.keras.layers import Dense
import matplotlib.pyplot as plt
# 产生一个半环形数据集
X, y = make_moons(200, noise=0.25, random_state=100)  
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=2)
print(X.shape, y.shape)
def make_plot(X, y, plot_name, XX=None, YY=None, preds=None):
    plt.figure()
    axes = plt.gca()
    x_min = X[:, 0].min() - 1
    x_max = X[:, 0].max() + 1
    y_min = X[:, 1].min() - 1
    y_max = X[:, 1].max() + 1
    axes.set_xlim([x_min, x_max])
    axes.set_ylim([y_min, y_max])
    axes.set(xlabel="$x_l$", ylabel="$x_2$")
    if XX is None and YY is None and preds is None:
        yr = y.ravel()
        for step in range(X[:, 0].size):
            if yr[step] == 1:
                plt.scatter(X[step, 0], X[step, 1], c='b', s=20,  edgecolors='none', marker='x')
            else:
                plt.scatter(X[step, 0], X[step, 1], c='r', s=30, edgecolors='none', marker='o')
        plt.show()
    else:
        plt.contour(XX, YY, preds, cmap=plt.cm.spring, alpha=0.8)
        plt.scatter(X[:, 0], X[:, 1], c=y, s=20, cmap=plt.cm.Greens, edgecolors='k')
        plt.rcParams['font.sans-serif'] = ['SimHei']  
        plt.rcParams['axes.unicode_minus'] = False
        plt.title(plot_name)
        plt.show()
make_plot(X, y, None)
#创建容器 
model = Sequential()  
#创建第一层
model.add(Dense(8, input_dim=2, activation='relu'))  
for _ in range(3):
    model.add(Dense(32, activation='relu'))
#创建最后一层,激活
model
y_min = X[:, 1].min() - 1
y_max = X[:, 1].max() + 1
XX, YY = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01)) 
Z = model.predict_classes(np.c_[XX.ravel(), YY.ravel()])
preds = Z.reshape(XX.shape)
title = "分类结果"
make_plot(X_train, y_train, title, XX, YY, preds)

 

二、手写数字识别

下面使用深度学习进行一个简单的手写数字识别

输出结果如下 精度大概在百分之九十七

代码如下

import tensorflow as tf
#载入MNIST 数据集。
mnist = tf.keras.datasets.mnist
#拆分数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()
#将样本进行预处理,并从整数转换为浮点数
x_train, x_test = x_train / 255.0, x_test / 255.0
#使用tf.keras.Sequential将模型的各层堆叠,并设置参数
model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])
#设置模型的优化器和损失函数
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
#训练并验证模型
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test,  y_test, verbose=2)

三、猫狗识别

下面利用tensorflow平台实现对猫狗品种的识别

原图片如下

识别结果如下 第二项是品种 第三项是预测的概率

部分代码如下

from tensorflow.keras.applications.resnet50 import ResNet50 
from tensorflow.keras.preprocessing import image 
from tensorflow.keras.applications.resnet50 import preprocess_input, decode_predictions 
import numpy as np 
from PIL import ImageFont, ImageDraw, Image 
import cv2
img_path = 'dog.jpg'     #进行狗的判断
#img_path = 'cat.jpg'     #进行猫的判断
#img_path = 'deer.jpg'    #进行鹿的判断
img = image.load_img(img_path, target_size=(224, 224)) 
x = image.img_to_array(img) 
x = np.expand_dims(x, axis=0) 
x = preprocess_input(x)
weights_path = 'resnet50_weights_tf_dim_ordering_tf_kernels.h5'
def get_model(): 
    model = ResNet50(weights=weights_path) 
    # 导入模型以及预训练权重
    print(model.summary()) # 打印模型概况 
    return model
model = get_model()

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
9月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
1011 7
|
9月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
9月前
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow与PyTorch深度对比分析:从基础原理到实战选择的完整指南
蒋星熠Jaxonic,深度学习探索者。本文深度对比TensorFlow与PyTorch架构、性能、生态及应用场景,剖析技术选型关键,助力开发者在二进制星河中驾驭AI未来。
970 13
|
9月前
|
人工智能 自然语言处理 TensorFlow
134_边缘推理:TensorFlow Lite - 优化移动端LLM部署技术详解与实战指南
在人工智能与移动计算深度融合的今天,将大语言模型(LLM)部署到移动端和边缘设备已成为行业发展的重要趋势。TensorFlow Lite作为专为移动和嵌入式设备优化的轻量级推理框架,为开发者提供了将复杂AI模型转换为高效、低功耗边缘计算解决方案的强大工具。随着移动设备硬件性能的不断提升和模型压缩技术的快速发展,2025年的移动端LLM部署已不再是遥远的愿景,而是正在成为现实的技术实践。
1686 39
|
9月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
634 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
9月前
|
存储 分布式计算 测试技术
Python学习之旅:从基础到实战第三章
总体来说,第三章是Python学习路程中的一个重要里程碑,它不仅加深了对基础概念的理解,还引入了更多高级特性,为后续的深入学习和实际应用打下坚实的基础。通过这一章的学习,读者应该能够更好地理解Python编程的核心概念,并准备好应对更复杂的编程挑战。
260 12
|
9月前
|
存储 数据采集 监控
Python文件操作全攻略:从基础到高级实战
本文系统讲解Python文件操作核心技巧,涵盖基础读写、指针控制、异常处理及大文件分块处理等实战场景。结合日志分析、CSV清洗等案例,助你高效掌握文本与二进制文件处理,提升程序健壮性与开发效率。(238字)
699 1
|
9月前
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
1569 1
|
9月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
791 0
|
9月前
|
机器学习/深度学习 监控 数据挖掘
Python 高效清理 Excel 空白行列:从原理到实战
本文介绍如何使用Python的openpyxl库自动清理Excel中的空白行列。通过代码实现高效识别并删除无数据的行与列,解决文件臃肿、读取错误等问题,提升数据处理效率与准确性,适用于各类批量Excel清理任务。
769 0

推荐镜像

更多