当前位置: 首页 > news >正文

ITensors——一个聪明的张量网络库(1)

如题,最近重归学习ITensors,这个系列会断断续续记录一些学习使用ITensors时的ideas or points。

1、Introduction

张量网络是一种处理具有许多指标的张量的技术。一个优雅的替代方法是张量图符号。

v2-8cde8a1a156da5d86d3388ee18e4fdbc_1440w

ITensor是智能张量的缩写,是一个受张量图符号启发的软件库。

第一个问题是,在使用库时,任何不是概念算法的一部分的实现细节都应该尽可能地对用户隐藏。

第二个关键的原则是,该软件应该允许人们在不同的级别上与它进行交互。

2、 Interface Examples

2.1、Installing ITensor

$ julia
julia> ]
pkg> add ITensors

2.2、Obtaining Help

julia> using ITensors
julia> ?
help?> Index
search: Index indexin IndexStyle IndexLinear ...
An Index represents a single tensor index with fixed
dimension dim. Copies of an Index compare equal unless
their tags are different.
...

2.3、Basic ITensor Usage(基本的ITensor用法)

使用前输入下行代码

using ITensors

在创建ITensor之前,首先要创建其索引

i = Index(3)

创建一个维数为3的张量索引,并将此索引对象分配给引用i。将i的结果打印出来可以得到

i = (dim=3|id=804)

在定义一些索引对象i、j、k、l之后,可以定义ITensor:

A = ITensor(i)
B = ITensor(j,i)
C = ITensor(l,j,k)

由于匹配的索引对可以通过它们的id数自动识别彼此,因此张量收缩可以进行为:

D = A * B * C

*运算符找到两个指数之间的所有匹配指数,并对这些指数进行总和或收缩。

2.4、Setting ITensor Elements(定义ITensor元素)

定义ITensor元素是通过如下方式

A[i=>2,j=>3,k=>1] = 0.837

它将值0.837赋给A的元素,其中索引i的值是2,j的值是3,k的值是1。因为索引对象及其值一起提供,所以它们可以以任何顺序传递。因此,

A[i=>2,j=>3,k=>1] = 0.837
A[k=>1,i=>2,j=>3] = 0.837

这两种语法将会构建两个完全一样的ITensor。
要使用正态分布的随机元素而不是特定的值创建ITensor,可以使用构造函数

T = randomITensor(i,j,k)

上面创建的是实数值张量,也可以定义复数值张量

T = randomITensor(ComplexF64,i,j,k)

只需要定义数据类型是ComplexF64。

2.5、Matrix Example(矩阵实例)

定义两个二阶矩阵

A = ITensor(i,j)
B = ITensor(k,j)

缩并这两个二阶张量

C = A * B

这里并不需要像其他语言一样进行额外的操作,*操作会自动识别相同的索引。

2.6、Summing ITensors(求和ITensor)

只要它们有相同的指数集,就可以添加和减去它们。即使指数的顺序不同,加法也总是可以直接工作的,因为ITensor系统能够在内部推断出所需的数据排列:

A = randomITensor(i,j,k)
B = randomITensor(k,i,j)
C = A + B

它也可以减去和乘以标量,包括复标量,例如:

D = 4*A - B/2
F = A + 3.0im * B

2.7、Priming Indices(引导索引)(没找到合适的翻译)

Ap = prime(A,i)

简单来说就是生成一个索引的副本,让他和之前的索引被区分。比如

julia> ip = prime(i)
(dim=3|id=350|"i")'julia> ipp = ip'
(dim=3|id=350|"i")''julia> ippp = i''
(dim=3|id=350|"i")''julia> hasind(ipp,i'')
truejulia> hasind(ipp,i')
falsejulia> i != ip
true

2.8、Compiling ITensor(编译ITensor)

预编译,每个ITensor版本更新后运行一次,生成编译映像。

julia> using ITensors
julia> ITensors.compile()

2.9、Online Code Examples

http://www.jsqmd.com/news/642404/

相关文章:

  • ITensors——一个聪明的张量网络库(2)
  • 解决PyTorch与TorchVision版本冲突:从依赖管理到环境隔离的实战指南
  • bootstrap怎么给图片添加滤镜效果
  • OWL ADVENTURE新手教程:像玩游戏一样轻松玩转图像识别AI
  • 2026重庆学历提升机构实力排行榜:Top7深度测评,帮你精准避坑 - 商业科技观察
  • XSLT Apply: 实用技巧与深入解析
  • 搜索效果提升300%的多模态实战方案(工业级部署白皮书首次公开)
  • Python爬虫实战:用Requests+正则搞定马蜂窝景点评论,数据直接存TXT
  • 从零部署Orbbec Gemini2:ROS2 Humble环境下的驱动配置与多话题数据解析
  • RDP Wrapper终极指南:3步解锁Windows家庭版远程桌面完整功能
  • 基于西门子HyperLynx与Flotherm联合进行PCB焦耳热仿真的技术解析与实战指南
  • apache-seatunnel使用手册
  • SP4523锂电池充放电 SOC
  • 洞悉电爪性能特点与应用:2026年优质电爪品牌甄选实用指南 - 品牌2026
  • 终极BT下载加速指南:免费提升下载速度的完整教程
  • 多智能体五大协调模式入门到精通(非常详细),看这篇就够了!
  • 【AIAgent可靠性黄金法则】:SITS2026权威发布的5大不可妥协要素(20年架构师亲验)
  • 【数据结构与算法】第45篇:跳跃表(Skip List)
  • ITensors——一个聪明的张量网络库(3)
  • 从“AI仿生人”到“原创音乐人”:普通人如何用AI写歌、发歌、赚钱
  • 网页游戏市场每日分析|二级市场传奇页游平台排名|602游戏平台
  • JDK安装及JRE说明
  • fastapi2
  • Wazuh OVA镜像部署实战:从零搭建开源XDR-SIEM一体化平台
  • AI 到底会不会取代人类?从四大行业落地真相看程序员的“危”与“机”
  • SITS2026多模态搜索上线前48小时:一场召回率突降38%的故障溯源与反脆弱加固
  • 2026年排行好的找工作招工平台推荐 - 品牌宣传支持者
  • D3KeyHelper终极指南:5分钟掌握暗黑3技能自动化神器
  • STM32F103实战:Zbar库移植与二维码识别优化指南
  • FT232H连接Vivado出现问题2026