⌈ 传知代码 ⌋ 基于矩阵乘积态的生成模型
💛前情提要💛
本文是传知代码平台中的相关前沿知识与技术的分享~
接下来我们即将进入一个全新的空间,对技术有一个全新的视角~
本文所涉及所有资源均在传知代码平台可获取
以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦!!!
以下内容干货满满,跟上步伐吧~
📌导航小助手📌
- 💡本章重点
- 🍞一. 概述
- 🍞二. 方法
- 🍞三.实现
- 🍞四.训练结果
- 🫓总结
💡本章重点
- 基于矩阵乘积态的生成模型
🍞一. 概述
生成模型,通过从数据中学习联合概率分布并据此生成样本,是机器学习和人工智能中的一个重要任务。受量子物理学中概率解释的启发,该文章提出了一种使用矩阵积状态的生成模型,这是一种最初用于描述(特别是一维)纠缠量子态的张量网络。其模型享有类似于密度矩阵重正化群方法的高效学习能力,该方法允许动态调整张量的维度,并提供了一种高效的直接采样方法用于生成任务。本文试图复现该文章的工作,利用该文章的思想,方法去实现MNIST手写数字的生成任务。
- Han Z-Y, Wang J, Fan H, et al. Unsupervised Generative Modeling Using Matrix Product States[J]. Physical Review X, 2018, 8(3): 031012

🍞二. 方法
量子力学的概率解释自然地建议使用量子态来建模数据分布。假设我们将概率分布编码到一个量子波函数:

又在一定程度上能够表示更多不同种类的构型成为现在需要解决的问题。许多已经开发的表示方法和算法可以用于高效的概率建模。在这里,我们使用矩阵积状态(MPS)对波函数进行参数化:

上面的图示意思为,左边是我们需要表示的波函数,线代表它依赖的指标(或者变量),右边则是对应的MPS表示,两个方括号直接的连线代表求和,即将对应的指标(或者变量求和,类似于矩阵的乘积)进行收缩。我们可以看出我们把一个复杂的波函数变成了有限个3指标张量的收缩。
🍞三.实现
导入训练集(MNIST)
1000 张 MNIST 图像已存储为 mnist784_bin_1000.npy。
每张图像包含:n = 28 * 28 个像素,每个像素的取值为0或1。每张图像被视为维度为 2^n 的希尔伯特空间中的一个乘积态。
n = 784
m = 1000
data = np.load("mnist784_bin_1000.npy").astype(np.int32)
data = data[:m,:]
data = torch.LongTensor(data)\
plt.figure(figsize=(10,2))
imgs = data.cpu().reshape([-1,28,28])
_, ax = plt.subplots(2,10)
for i in range(2): for j in range(10):index = i * 2 + jif(a >= imgs.shape[0]):breakax[i][j].imshow(imgs[index,:,:],cmap='bone')ax[i][j].set_xticks([])ax[i][j].set_yticks([])
plt.show()
这可以让我们观察以下MNIST数据集的样子

定义MPS
现在我们要构造一个初始的MPS, 根据上面的阐述,我们的MPS是由一系列3指标的张量的所构成的,如下所示:

chi = 30
mydevice = 'cuda' if torch.cuda.is_available() else torch.device("cpu")
print(mydevice)
data = data.to(mydevice)
bond_dims = [chi for i in range(n-1)]+[1]
tensors= [ torch.randn(bond_dims[i-1],2,bond_dims[i],device=mydevice) for i in range(n)]
- 我们可以输出从而看到这些张量的输出维度

概率计算
概率计算可以遵循前面的Born公式,即:

在这里,带有一个小边(常称之为脚)是一个向量,代表的是对应像素的状态,是一个二维向量,用来表示对应的像素是黑还是白
现在难以计算的是配分函数,即:

这个东西,这涉及到张量网络的缩并,在张量网络这个领域中由非常多的缩并方式,一个常用的方法是正交化,即把MPS右边的那些三阶张量全部正交化使得他们收缩刚好是一个单位张量。这个过程如下:

通过不断的对左边的张量作用QR分解从而使得左边张量全部正交化(黄色的)。据此我们可以计算出对应的波函数:
def getPsi():psi = torch.ones([m, 1, 1], device=mydevice)for site in range(n):selected_tensor = tensors[site][:, data[:, site], :].permute(1, 0, 2)psi = torch.matmul(psi, selected_tensor)return psi
生成图片
生成图片的过程可以采用条件概率的方法,即先采样一个边缘概率,再从这个边缘概率对应的变量继续采样,重复这个过程即可:

核心代码为:
def generateSamples(batch):n = 784samples = torch.zeros([batch, n],device=mydevice)for site in range(n - 1):orthogonalize(site, True) for s in range(batch):vec = torch.ones(1,1,device=mydevice)for site in range(n-1, -1, -1):vec = (tensors[site].view(-1, bond_dims[site]) @ vec).view(-1, 2)p0 = vec[:, 0].norm()**2 / (vec.norm()**2)x = (0 if np.random.rand() < p0 else 1)vec = vec[:, x]samples[s][site] = xreturn samples
🍞四.训练结果

🫓总结
综上,我们基本了解了“一项全新的技术啦” 🍭 ~~
恭喜你的内功又双叒叕得到了提高!!!
感谢你们的阅读😆
后续还会继续更新💓,欢迎持续关注📌哟~
💫如果有错误❌,欢迎指正呀💫
✨如果觉得收获满满,可以点点赞👍支持一下哟~✨
【传知科技 – 了解更多新知识】
相关文章:
⌈ 传知代码 ⌋ 基于矩阵乘积态的生成模型
💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…...
软件测试必备技能
在软件测试领域,以下是一些必备的技能和能力,可以帮助你成为一名优秀的软件测试工程师: 1. 测试基础知识: 熟悉软件测试的基本概念、原则和流程,包括不同类型的测试(如单元测试、集成测试、系统测试&#…...
TL3568编译uboot报错
编译uboot前,需要 ① sudo apt-get install device-tree-compiler 否则会报“ERROR: No dtc” ② sudo apt install python 装个Python2,否则会报“ERROR: No python2”...
qiankun 微前端 隔离子应用样式,解决 ant-design-vue 子应用样式污染问题(已落地)
样式冲突产生原因 先分析乾坤qiankun 构建之后,会根据你的配置 给每个子应用生成一个id, 当加载到对应子应用的时候,就把内容放到对应的id 标签里去, 这样能有效的隔离 js 代码,但是样式是加载在全局的 所以 当两个子…...
一个前后端分离架构的低代码开发平台,支持微服务架构,支持开发SAAS项目(附源码)
前言 在当前的企业软件开发领域,开发者常常面临着代码重复性高、开发效率低、项目周期长等挑战。现有的软件解-决方案往往难以满足快速变化的市场需求,特别是在SAAS项目、企业信息管理系统(MIS)、内部办公系统(OA&…...
whisper+whisperx ASR加对齐
忘了怎么安装了,这里记录一下整理出来的类,不过这个 from chj.comm.pic import *import json import whisper import whisperx import gcclass Warp_whisper:def __init__(self, language"zh", device"cuda", compute_type"fl…...
【已解决】YOLOv8加载模型报错:super().__init__(torch._C.PyTorchFileReader(name_or_buffer))
《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…...
中国象棋 纯网页前端 演示与下载
https://andi.cn/app/chess/...
学习大数据DAY29 python基础语法2
目录 调试---debug tuple(元组) set(集合) dict(字典) 转换 推导式 上机练习 3 函数 参数 不定长参数 值传递与引用传递 局部和全局变量 上机练习 4 调试---debug 1. 先设置断点 2. 点击调试…...
自动化测试常用函数(Java方向)
目录 一、元素的定位 1.1 cssSelector 1.2 xpath 1.2.1 获取HTML页面所有的节点 1.2.2 获取HTML页面指定的节点 1.2.3 获取⼀个节点中的直接子节点 1.2.4 获取⼀个节点的父节点 1.2.5 实现节点属性的匹配 1.2.6 使用指定索引的方式获取对应的节点内容 二、操作测试对…...
申瓯通信设备有限公司在线录音管理系统(复现过程)
漏洞简介 申瓯通信设备有限公司在线录音管理系统 index.php接口处存在任意文件读取漏洞,恶意攻击者可能利用该漏洞读取服务器上的敏感文件,例如客户记录、财务数据或源代码,导致数据泄露 一.复现过程 fofa搜索语句:title"在线录音管…...
【C++进阶学习】第十一弹——C++11(上)——右值引用和移动语义
前言: 前面我们已经将C的重点语法讲的大差不差了,但是在C11版本之后,又出来了很多新的语法,其中有一些作用还是非常大的,今天我们就先来学习其中一个很重要的点——右值引用以及它所扩展的移动定义 目录 一、左值引用和…...
JavaScript 监听 localStorage 的变化
使用 JavaScript 监听 localStorage 的变化 在Web开发中,localStorage是一种非常常用的本地存储机制。它允许我们在浏览器中存储键值对数据,即使用户关闭了浏览器或刷新页面,数据也不会丢失。但是,有时我们需要实时监控 localStorage 的变化,以便能够及时做出响应。在本文中,我…...
Java 中 HashMap 和 Hashtable 的联系
目录 相同 不同 1. 继承的父类不同 2. 线程安全性不同 3. 包含的 contains 方法不同 4. toString方法不同 5. 是否允许null值不同 6. 计算hash值的方式不同 7. 计算索引位置的方法不同 8. 初始化容量不同 9. 扩容方式不同 10. 内部存储策略不同(此处讨论…...
Web3 开发教程
引言 Web3 是指第三代互联网,其核心特征之一是去中心化。通过区块链技术和智能合约,Web3 应用程序(dApps)能够在无需中心化服务器的情况下运行。本文将引导你完成一个简单的 Web3 应用程序的开发过程,包括环境搭建、智…...
傻瓜式PHP-Webshell免杀学习手册,零基础小白也能看懂
项目描述 一、PHP相关资料 PHP官方手册: https://www.php.net/manual/zh/ PHP函数参考: https://www.php.net/manual/zh/funcref.php 菜鸟教程: https://www.runoob.com/php/php-tutorial.html w3school: https://www.w3school…...
第十九次(安装nginx代理tomcat)
回顾 1.安装nodejs---jdk一样你的软件运行环境 yum -y list install|grep epel $? yum -y install nodejs #版本号 node -v 2.下载对应的nodejs软件npm yum -y install npm npm -v npm set config ...淘宝镜像 3.安装vue/cli command line interface 命令行接口 npm ins…...
小红书0510笔试-选择题
Cache-Control:这是一个用于定义缓存行为的头部字段,它可以设定多个值来控制缓存的各个方面,如“public”、“private”、“no-cache”、“max-age”等。虽然Cache-Control的max-age指令可以指定缓存项的有效期,但它并不直接标识资…...
3.Java面试题之AQS
1. 写在前面 AQS(AbstractQueuedSynchronizer)是Java并发包(java.util.concurrent)中的一个抽象类,用于实现同步器(如锁、信号量、栅栏等)。AQS提供了一种基于FIFO队列的机制来管理线程的竞争和…...
redis的集群(高可用)
redis集群的三种模式: 主从复制 奇数 三台 一主两从 哨兵模式 3 一主两从 cluster集群 六台 主从复制:和mysql的主从复制类似,主可以写,写入主的数据通过RDB方式把数据同步到从服务器,从不能更新到主,也…...
超声引导手术中的‘呼吸’难题:我们如何用体外标记法搞定肝部超声-CT的实时配准?
超声与CT影像实时配准:破解呼吸运动干扰的临床实战方案 在肝癌射频消融或穿刺活检手术中,影像引导的精准度直接决定治疗效果。超声凭借其实时性成为首选引导工具,但图像质量局限常需与高分辨率的CT影像融合。这一过程中,呼吸运动导…...
构建AI智能体技能超市:标准化工作流与多平台适配实践
1. 项目概述:一个面向AI智能体的“技能超市”如果你和我一样,每天都在和Codex、Claude、Cursor这些AI助手打交道,那你肯定也遇到过这样的场景:想让AI帮你生成一份规范的Git提交信息、自动更新文档索引,或者为一个新项目…...
【Oracle数据库指南】第17篇:Oracle逻辑与物理存储结构——表空间、段、区、数据块全解析
上一篇【第16篇】Oracle连接模式与内存管理——专用服务器、共享服务器与AMM 下一篇【第18篇】Oracle数据库规划与前期准备——创建数据库前的系统工作 摘要 本文系统讲解Oracle数据库的存储结构体系,包括逻辑存储(数据库→表空间→段→区→数据块&…...
用Matplotlib heatmap分析你的数据:从农产品收成到商品销量的实战案例拆解
用Matplotlib heatmap解锁业务洞察:从农场到电商的数据可视化实战 热力图(heatmap)远不止是颜色方块的排列——它是数据与商业决策之间的视觉桥梁。想象一下,你面前有一张农场作物产量的热力图,颜色从深绿渐变到亮黄&a…...
基于Web Audio与Three.js的VR音乐可视化系统开发实践
1. 项目概述:当音乐可视化遇上VR,一次沉浸式体验的探索最近在折腾一个挺有意思的项目,叫“VersaYT/JellyVR”。乍一看这个名字,可能有点摸不着头脑,它其实是一个将YouTube音乐视频的音频频谱,实时转化为虚拟…...
NSA 5G:从双连接到网络切片,解析5G组网演进之路
1. 非独立组网5G:一场关于“先有鸡还是先有蛋”的行业博弈如果你在2017年的世界移动通信大会(MWC)现场,可能会感到一丝困惑。前一年,整个行业还在为5G描绘一幅彻底颠覆4G、开启万物互联新纪元的宏伟蓝图。然而一年后&a…...
使用Taotoken管理控制台进行APIKey的权限划分与审计日志查看
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken管理控制台进行APIKey的权限划分与审计日志查看 在团队协作开发或构建多应用服务时,统一管理大模型API的访…...
别再只把JWT当登录凭证了!从CTFHub靶场看JWT在API安全与数据交换中的‘双刃剑’效应
JWT安全实战:从CTFHub靶场到企业级API防护的深度解析 在数字化身份认证领域,JSON Web Token(JWT)早已超越简单的登录凭证角色,成为现代分布式系统的核心组件。当开发者仅将其视为"带签名的Cookie"时…...
Clawforce:开源AI智能体团队基础设施,实现持久化与安全协作
1. 项目概述:Clawforce,一个为持久化AI智能体团队构建的基础设施最近在AI智能体领域,一个词被反复提及:“Agentic AI”,即智能体驱动的AI。这不再是让单个AI模型回答一个问题那么简单,而是构建一个能够自主…...
技术指标库 Pandas TA 详细使用手册
Pandas TA 详细使用手册:从入门到精通 一、简介与安装 Pandas TA 是一个专为金融时间序列分析打造的技术分析库,它扩展了 Pandas DataFrame,提供 130 种技术指标、60 种K线形态识别功能。它的核心优势在于与 Pandas 深度集成,让你…...
