首页 > 其他分享 >TedNet:一个用于张量分解网络的Pytorch工具包

TedNet:一个用于张量分解网络的Pytorch工具包

时间:2023-08-18 13:45:19浏览次数:49  
标签:TDNs 张量 工具包 Pytorch 分解 TedNet TD

摘要

张量分解网络(Tensor Decomposition Networks,TDNs)因其固有的紧凑架构而流行。为了给更多的研究人员提供一种灵活的方式来利用TDNs,我们提出了一个名为TedNet的Pytorch工具包。TedNet实现了5种张量分解(即,CANDECOMP/PARAFAC(CP)、Block-Term Tucker(BTT)、Tucker-2、Tensor Train(TT)和Tensor Ring(TR)在传统的深度神经层、卷积层和全连接层上。通过利用基本层,可以简单地构造各种TDNs。TedNet获取链接为https://github.com/tnbar/tednet.

引言

张量分解网络(Tensor Decomposition Networks,TDNs)是通过用张量格式分解深层神经层来构建的。由于可以从张量分解核中恢复层的原始张量,TDNs通常被视为相应网络的压缩方法。与卷积神经网络(CNN)和递归神经网络(RNN)等传统网络相比,TDNs可以小得多,占用很少的内存。例如,TT-LSTM [1],BTT-LSTM [2,3],TR-LSTM [4,5]能够以比原始模型更高的精度减少17,554,17,414和34,192倍的参数。TDNs具有结构轻巧、性能优良等优点,有望应用于移动的设备、微型计算机等资源受限的应用场合。由于这些优点,TDNs通常可以在许多任务中实现相对高的准确度,其中参数减少很大,例如动作识别[6,7]。TDNs也已在FPGA中实现,用于快速推理,具有超内存减少[8]和多任务学习,以提高表示能力[9]。在此背景下,我们设计了TedNet软件包,为研究者在TDNs上的探索提供方便。

有几个相关的软件包,如T3F [10],Tensorly [11],TensorD [12],TensorNetwork [13],tntorch [14],OSTD [15]和TensorTools [16]。构造了用于低秩分解的最优分解图,并用MATLAB实现。基于NumPy [17]的TensorTools仅实现CP分解,而T3F明确设计用于Tensorflow上的Tensor Train分解[18]。类似地,基于Tensorflow,TensorD支持CP和Tucker分解。相比之下,TedNet使用后端Pytorch实现了五种张量分解[19]。TensorNetwork基于Tensorflow构建,并集成了丰富的张量计算工具。然而,TensorNetwork用于张量分解算法而不是TDNs。Tensorly支持各种后端,包括CuPy,Pytorch,Tensorflow和MXNet [20]。不幸的是,尽管Tensorly在处理张量代数、张量分解和张量回归方面功能强大,但它仍然缺乏对应用程序编程接口(API)的支持,无法直接构建张量神经网络。有趣的是,Tensorly可以通过其张量分解操作来帮助初始化TedNet网络模块。相比之下,TedNet可以通过直接调用API快速建立TDN层。此外,我们还提供了目前研究人员流行的三种深度TDNs。由于Pytorch的动态图形机制,TedNet也可以灵活地为程序员调试。

细节信息

TedNet的设计目标是通过调用相应的API来构建TDNs,这可以极大地简化构建TDNs的过程。如图1所示,TedNet采用Pytorch作为训练框架,因为它具有自动微分功能和构建DNN模型的方便性。此外,TedNet还使用NumPy [17]来辅助张量运算。TedNet的基本模块是TNBase,它是一个抽象类,继承自torch.nn.Module。因此,TedNet模型可以与其他Pytorch模型友好地结合起来。作为一个抽象类,TNBase需要子类来实现4个功能.在图1的右侧,我们展示了TedNet的两个主要深度架构,即TD ResNet和TD LSTM,它们可能分别是卷积神经网络和递归神经网络中最常用的主干。

通常,DNN由CNN和Linear构建。CNN的权重是4模式张量C ∈ RK×K×Cin×Cout,其中K表示卷积窗口,Cin表示输入通道,Cout表示对应的输出通道。线性是一个矩阵W ∈ RI×O,其中I和O分别是输入和输出特征的长度。与DNN类似,TDNs由TD-CNN和TDLinear组成(为了简化,TD-表示相应的张量分解模型),其权重CW通过张量分解进行因式分解。按照这种模式,有5种常用的张量分解(即CP、Tucker-2、Block-Term Tucker、Tensor Train和Tensor Ring),满足了大多数常见情况。值得注意的是,TedNet是一个支持张量环分解的开源包。此外,基于TD-CNN和TD-Linears,TedNet已经构建了一些基于张量分解的深度神经网络,例如。TD-ResNets,TD-RNNs。

其他信息

https://tednet.readthedocs.io/en/latest/

标签:TDNs,张量,工具包,Pytorch,分解,TedNet,TD
From: https://www.cnblogs.com/XL2COWARD/p/PIM4AI_3.html

相关文章

  • Lnton羚通PyTorch快速入门基础知识
    workingwithdata(处理数据)PyTorch提供了两个基本方法用于数据处理,torch.utils.data.DataLoader和torch.utils.data.Dataset。DataSet存储样本及其对应的标签,DataLoader在Dataset基础上封装了一个可迭代的对象。PyTorch提供了不同应用领域的库,例如TorchText,TorchVisi......
  • Pytorch 并行:DistributedDataParallel
    Pytorch并行:DistributedDataParallel一个节点上往往有多个GPU(单机多卡),一旦有多个GPU空闲(当然得赶紧都占着),就需要合理利用多GPU资源,这与并行化训练是分不开的。O、数据并行化按《深入浅出Pytorch》的话来说,pytorch模型的并行化,主要分为两类:模型并行:一个GPU容纳不了一......
  • PyTorch神经网络工具箱-新手笔记
    训练模型构建模型后,接下来就是训练模型。PyTorch训练模型的主要步骤包括加载和预处理数据集、损失计算、定义优化算法、反向传播、参数更新等主要步骤。1)加载和预处理数据集:可以使用PyTorch的数据处理工具,如torch.utils和torchvision等。2)定义损失函数:通过自定义的方法或使用PyTorc......
  • 什么是 Node.js 的 cross-env 工具包
    cross-env是一个运行在Node.js环境中的工具包,它的主要作用是让我们可以在命令行中设置环境变量,而不必担心跨操作系统的兼容问题。在Unix和Windows系统中设置环境变量的方式是不同的,这就导致了我们无法写出一条在所有操作系统中都可以运行的设置环境变量的命令。cross-env......
  • Pytorch中使用Embedding报错'IndexError'的解决方法
    简介  Pytorch中nn.Embedding为针对词向量的层,其用来实现词与词向量的映射。其调用形式如下nn.Embedding(num_embeddings:int,embedding_dim:int,padding_idx:int|None=None,max_norm:float|None=None,norm_type:float=2.,scale_grad_by_freq:b......
  • PyTorch神经网络工具箱-新手笔记
    神经网络核心组件利用PyTorch神经网路工具箱设计神经网络就像搭积木一样,可以极大简化构建模型的任务。神经网络核心组件如下:层:神经网络的基本结构,将输入张量转换为输出张量。模型:由层构成的网络。损失函数:参数学习的目标函数,通过最小化损失函数来学习各种参数。优化器:如在使损失值......
  • LabVIEW图形化TensoRT工具包的安装下载分享
    (文章目录)前言Hello,大家好,我是virobotics(仪酷智能),今天我们一起来看一下如何安装【LabVIEWTensoRT工具包】。一、LabVIEW图形化TensoRT工具包简介<fontface="SimSun"color=blacksize=4>工具包特点:</font>图形化编程:无需掌握文本编程基础即可完成机器视觉项目;直接的模......
  • 实践教程|源码级理解Pytorch中的Dataset和DataLoader
    前言 本文30分钟带你达到对Pytorch中的Dataset和DataLoader的源码级理解,并提供构建数据管道的3种常用方式的范例,扫除你构建数据管道的一切障碍。本文转载自算法美食屋作者|梁云1991仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最......
  • Anaconda+PyCharm+Pytorch/tensorflow环境配置个人总结
    Anaconda是一个非常方便的python版本管理工具,可以很方便地切换不同版本的Python进行测试。同时不同版本之间也不存在相互的干扰。PyCharm是一款常见的PythonIDE,pytorch和TensorFlow是目前两个主流的深度学习框架。Anaconda安装前往官方网址下载最新版即可,安装教程 PyCharm......
  • Pytorch框架CV开发-从入门到实战
    课程下载——Pytorch框架CV开发-从入门到实战提取码:hcjk分享课程——Pytorch框架CV开发-从入门到实战,附代码+PDF课件+数据集下载。课程目标:掌握pytorch深度学习框架在计算机视觉领域的开发技术,理解卷积神经网络的基础知识,学会使用相关的网络模型完成图像分类、对象检测、语义分......