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

简介: 【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()

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

相关文章
|
29天前
|
机器学习/深度学习 人工智能 算法
【眼疾病识别】图像识别+深度学习技术+人工智能+卷积神经网络算法+计算机课设+Python+TensorFlow
眼疾识别系统,使用Python作为主要编程语言进行开发,基于深度学习等技术使用TensorFlow搭建ResNet50卷积神经网络算法,通过对眼疾图片4种数据集进行训练('白内障', '糖尿病性视网膜病变', '青光眼', '正常'),最终得到一个识别精确度较高的模型。然后使用Django框架开发Web网页端可视化操作界面,实现用户上传一张眼疾图片识别其名称。
55 9
【眼疾病识别】图像识别+深度学习技术+人工智能+卷积神经网络算法+计算机课设+Python+TensorFlow
|
25天前
|
机器学习/深度学习 算法 PyTorch
【深度学习】TensorFlow面试题:什么是TensorFlow?你对张量了解多少?TensorFlow有什么优势?TensorFlow比PyTorch有什么不同?该如何选择?
关于TensorFlow面试题的总结,涵盖了TensorFlow的基本概念、张量的理解、TensorFlow的优势、数据加载方式、算法通用步骤、过拟合解决方法,以及TensorFlow与PyTorch的区别和选择建议。
52 2
|
28天前
|
机器学习/深度学习 存储 算法框架/工具
【深度学习】猫狗识别TensorFlow2实验报告
本文介绍了使用TensorFlow 2进行猫狗识别的实验报告,包括实验目的、采用卷积神经网络(CNN)进行训练的过程,以及如何使用交叉熵作为损失函数来识别猫狗图像数据集。
46 1
|
28天前
|
机器学习/深度学习 算法 测试技术
【深度学习】手写数字识别Tensorflow2实验报告
文章介绍了使用TensorFlow 2进行手写数字识别的实验报告,包括实验目的、采用全连接神经网络模型进行训练的过程、以及如何使用交叉熵作为损失函数来识别MNIST数据集的手写数字。
29 0
|
3天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【8月更文挑战第28天】本文将深入探讨深度学习领域的核心概念之一——卷积神经网络(CNN),并展示其在图像识别任务中的强大能力。文章首先介绍CNN的基本结构,然后通过一个简单的代码示例来演示如何构建一个基础的CNN模型。接着,我们将讨论CNN如何处理图像数据以及它在图像分类、检测和分割等任务中的应用。最后,文章将指出CNN面临的挑战和未来的发展方向。
|
1天前
|
机器学习/深度学习 编解码 人工智能
深度学习在图像识别中的应用与挑战
本文旨在探讨深度学习技术如何改变图像识别领域,并分析其面临的主要挑战。我们将从基础的卷积神经网络开始,逐步深入到最新的研究成果,包括对抗性网络和迁移学习的应用。同时,我们也将讨论数据偏差、模型泛化能力和伦理问题等挑战,以及未来研究的可能方向。
|
1天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别在自动驾驶系统中的应用
【8月更文挑战第30天】 随着人工智能技术的飞速发展,深度学习已成为推动多个领域革新的核心动力。特别是在图像识别任务中,深度学习模型展现出了卓越的性能。本文将探讨一种基于卷积神经网络(CNN)的图像识别方法,并分析其在自动驾驶系统中的实际应用。我们首先回顾深度学习在图像处理方面的基础知识,随后详细介绍一个高效的CNN架构,并通过实验验证该架构在复杂环境下对车辆、行人及其他障碍物的检测和分类能力。最后,讨论了该方法在实际自动驾驶系统中面临的挑战及潜在的改进方向。
|
2天前
|
机器学习/深度学习 算法 计算机视觉
深度学习在图像识别中的应用与挑战
【8月更文挑战第29天】 本文将深入探讨深度学习技术如何革新了图像识别领域,并指出当前面临的主要挑战。通过简明的语言和清晰的结构,我们将从基础概念出发,逐步解析深度学习在图像处理中的关键技术和应用实例,同时不忘讨论数据偏见、模型泛化能力和伦理问题等现代挑战。文章旨在为非专业读者提供一个友好的入口,了解这一领域的复杂性和魅力。
14 4
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在图像识别中的应用
【8月更文挑战第29天】本文将探讨深度学习技术在图像识别领域的应用。我们将通过一个简单的代码示例,展示如何使用深度学习模型进行图像分类。文章将详细介绍深度学习的基本原理、常用模型以及在图像识别中的实际应用。
|
2天前
|
机器学习/深度学习 人工智能 计算机视觉
深度学习在图像识别中的应用与挑战
【8月更文挑战第29天】本文深入探讨了深度学习技术,特别是卷积神经网络(CNN)在图像识别领域的应用及其面临的挑战。通过分析深度学习的基本原理和关键技术,结合具体的代码示例,本文旨在为读者提供一个关于如何利用深度学习进行图像识别的全面视角,同时指出当前技术的局限性和未来的发展方向。
下一篇
云函数