matplotlib 动态显示训练过程中的数据和模型的决策边界

news2024/11/28 8:48:11

文章目录

  • Github
  • 官网
  • 文档
  • 简介
  • 动态显示训练过程中的数据和模型的决策边界
    • 安装
    • 源码

Github

  • https://github.com/matplotlib/matplotlib

官网

  • https://matplotlib.org/stable/

文档

  • https://matplotlib.org/stable/api/index.html

简介

matplotlib 是 Python 中最常用的绘图库之一,用于创建各种类型的静态、动态和交互式可视化。以下是对 matplotlib 的详细介绍,包括其安装、基本使用方法、常见绘图类型、以及如何进行高级绘图和自定义图形。

动态显示训练过程中的数据和模型的决策边界

在这里插入图片描述

安装

pip install tensorflow==2.13.1
pip install matplotlib==3.7.5
pip install numpy==1.24.3

源码

import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap

# 生成数据
np.random.seed(0)
num_samples_per_class = 500
negative_samples = np.random.multivariate_normal(
    mean=[0, 3],
    cov=[[1, 0.5], [0.5, 1]],
    size=num_samples_per_class
)
positive_samples = np.random.multivariate_normal(
    mean=[3, 0],
    cov=[[1, 0.5], [0.5, 1]],
    size=num_samples_per_class
)

inputs = np.vstack((negative_samples, positive_samples)).astype(np.float32)
targets = np.vstack((np.zeros((num_samples_per_class, 1)), np.ones((num_samples_per_class, 1)))).astype(np.float32)

# 将数据分为训练集和测试集
train_size = int(0.8 * len(inputs))
X_train, X_test = inputs[:train_size], inputs[train_size:]
y_train, y_test = targets[:train_size], targets[train_size:]

# 构建二分类模型
model = Sequential([
    # 输入层:输入形状为 (2,)
    # 第一个隐藏层:包含 4 个节点,激活函数使用 ReLU
    Dense(4, activation='relu', input_shape=(2,)),
    
    # 输出层:包含 1 个节点,激活函数使用 Sigmoid(因为是二分类问题)
    Dense(1, activation='sigmoid')
])

# 编译模型
# 指定优化器为 Adam,损失函数为二分类交叉熵,评估指标为准确率
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 准备绘图
fig, ax = plt.subplots()
cmap_light = ListedColormap(['#FFAAAA', '#AAAAFF'])
cmap_bold = ListedColormap(['#FF0000', '#0000FF'])

# 动态绘制函数
def plot_decision_boundary(epoch, logs):
    ax.clear()
    x_min, x_max = X_train[:, 0].min() - 1, X_train[:, 0].max() + 1
    y_min, y_max = X_train[:, 1].min() - 1, X_train[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),
                         np.arange(y_min, y_max, 0.1))
    grid = np.c_[xx.ravel(), yy.ravel()]
    probs = model.predict(grid).reshape(xx.shape)
    ax.contourf(xx, yy, probs, alpha=0.8, cmap=cmap_light)
    ax.scatter(X_train[:, 0], X_train[:, 1], c=y_train[:, 0], edgecolor='k', cmap=cmap_bold)
    ax.set_title(f'Epoch {epoch+1}')
    plt.draw()
    plt.pause(0.01)

# 自定义回调函数
class PlotCallback(tf.keras.callbacks.Callback):
    def on_epoch_end(self, epoch, logs=None):
        plot_decision_boundary(epoch, logs)

# 训练模型并动态显示
plot_callback = PlotCallback()
model.fit(X_train, y_train, epochs=50, batch_size=16, callbacks=[plot_callback])

# 评估模型
loss, accuracy = model.evaluate(X_test, y_test)
print(f"Test Loss: {loss}")
print(f"Test Accuracy: {accuracy}")

plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1802640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

el-table合计行前置在首行,自定义合计行方法

背景 el-table原生合计行是在标签内增加show-summary属性,在表尾实现设计合计,且只对表格当前页面显示的列数据进行合计。element-UI效果如下图所示。 现要求在首行显示合计行,并自定义合计逻辑实现如下效果。 图示表格中,成本…

数据结构--线性表和串

个人介绍 hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的…

AGP4+ 打包运行闪退,AGP7+ 正常(has code but is marked native or abstract)

问题 安装应用,点击图标启动立马闪退! 诡异的闪退:AGP4 打包运行闪退,AGP7 正常 unity 导出的 Android 日志两个主要点: com.android.boot.App 是 Android 的 application 子类,程序入口 java.lang.Class…

网站开发需要用到哪些技术

网站开发涉及到多种技术,因为它需要前端和后端和数据库。 1.前端设计 在开发网站前端之前,需要提前设计前端的样子,这个时候就需要用到ps设计技术,美工技术,这个需要专业的知识储备才能把它做的更好&#xff0c…

若依项目部署(Linux2.0)

解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 配置Java环境变量: vim /etc/profile export JAVA_HOME/root/soft/jdk1.8.0_151 export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:$PATH 设置环境…

vscode中jupyter notebook执行bash命令,乱码解决方法

问题描述 使用vscode中使用jupyter notebook执行bash命令时,不管是中文还是英文,输出均是乱码 但是使用vscode的terminal执行同样的命令又没有问题,系统自带的cmd也没有问题。 最终解决后的效果如下: ## 问题分析 默认vscode会选择使用cmd执行shell, 但是通过vscode的设…

路由器作为网络扩展器——设置桥接、路由模式

下面提到的路由器都是家用路由器 一、有线桥接(交换模式) 1.连接示意图 (副路由器只看交换模式部分) 副路由器充当交换机的角色 二、无线桥接(与有线类似) (副路由器的无线信号 连接 主路由器的无线信号) 三、路由模式 1.连接示意图 (副路由器只看…

neo4j入门并使用案例说明

1、neo4j是什么 Neo4j是一个高性能的NoSQL图形数据库,它将结构化数据存储在网络(在数学角度称为图)上,而不是传统的表中。Neo4j是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。它因其高性能、轻量级、易嵌入和…

STM32项目分享:智能台灯系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板及元器件图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.c…

大模型学习之菜鸟的进阶道路---工程迭代

我们的大模型学习开始了新篇章,这一章还是比较基础的调用api,有些朋友建议直接搞构造大模型,很显然这是很不科学的,我们先从基础学习,大模型本来就是很晦涩难懂的东西,并且知识体系十分庞大,所以…

Progressive Feature Fusion Framework Based on Graph Convolutional Network

以Resnet50作为主干网络,然后使用GCN逐层聚合多级特征,逐级聚合这种模型架构早已不新鲜,这篇文章使用GCN的方式对特征进行聚合,没有代码。这篇文章没有过多的介绍如何构造的节点特征和邻接矩阵,我觉得对于图卷积来说&a…

Swift 序列(Sequence)排序面面俱到 - 从过去到现在(三)

概述 在上一篇 Swift 序列(Sequence)排序面面俱到 - 从过去到现在(二) 博文中,我们介绍了如何构建一个自定义类型中“多属性”排序的通用实现。 而在本课中我们将再接再厉介绍 iOS 15+ 中新的排序机制,并简要剖析就地排序(In-place sorting)对运行性能有着怎样的显著影…

数据挖掘--数据预处理

数据挖掘--引论 数据挖掘--认识数据 数据挖掘--数据预处理 数据挖掘--数据仓库与联机分析处理 数据挖掘--挖掘频繁模式、关联和相关性:基本概念和方法 数据挖掘--分类 数据挖掘--聚类分析:基本概念和方法 数据清理 缺失值 如果数据集含有分类属性…

阿里云(域名解析) certbot 证书配置

1、安装 certbot ubuntu 系统: sudo apt install certbot 2、申请certbot 域名证书,如申请二级域名aa.example.com 的ssl证书,同时需要让 bb.aa.example.com 也可以使用此证书 1、命令:sudo certbot certonly -d “域名” -d “…

聪明人社交的基本顺序:千万别搞反了,越早明白越好

聪明人社交的基本顺序:千万别搞反了,越早明白越好 国学文化 德鲁克博雅管理 2024-03-27 17:00 作者:方小格 来源:国学文化(gxwh001) 导语 比一个好的圈子更重要的,是自己优质的能力。 唐诗宋…

c++编译器在什么情况下会提供类的默认构造函数等,与析构函数

我们都知道,在 c 里,编写的简单类,若没有自己编写构造析构函数与 copy 构造函数 与 赋值运算符函数,那么编译器会提供这些函数,并实现简单的语义,比如成员赋值。看 源码时,出现了下图类似的情形…

《C++避坑神器·二十七》VS中release打断点方法,#undef作用

1、release打断点方式 2、#undef作用 #undef指令用于”取消“已定义的#define指令 案例:

小主机折腾记24

好久不更新,最近折腾的事如下 1.10块钱自提买了个半高机箱,15086140,把之前拆机的H61m-A/M32AA/DP_MB与200w航嘉电源装了进去,额外买了半高pcie转接了个m2位,江波龙64g安装了win10专业版,最后卖了176块钱&a…

连山露【诗词】

连山露 雾隐黄山路,十步一松树。 树上惊松鼠,松子衔木屋。 松子青嫩芽,尖尖头探出。 卷挂白露珠,装映黄山雾。

UML实战-BUG管理系统

概述 根据 UML建模的过程来进行一个完整系统的设计–Bug 管理系统。下面是一个标注 UML 设计过程的参考。 需求分析:用例图。系统分析:分析业务规则–状态图。系统分析:分析业务流程–活动图。系统设计:设计静态结构–类图和包图。系统设计:Action类被调用关系–序列图。…