更文明时代的优雅尺寸

torchsaber的Python项目详细描述


torchsaber: Elegant Dimensions for a more Civilized Age

It is a period of civil war. Rebel spaceships have won their first victory against the awesome RuntimeError (experimental support for Named Tensors in PyTorch).

动机

您多久编写或看到这样的代码?在

images=torch.randn(10,3,64,64)flipped=images.transpose(2,3)cropped=flipped[:,:,x:x+32,y:y+32]flatten=cropped.view(-1,32*32)gray=flatten.sum(dim=2)/3.

或者有个神秘的错误

^{pr2}$

我不管你来自哪个宇宙,那会伤到你的眼睛。怎么办 所有这些数字意味着什么?最后尺寸的顺序是什么?是 dim=2通道平均值的正确求和?谁知道呢?未命名 维度导致愤怒;愤怒导致缺陷;缺陷导致痛苦。在

但是,希望之光!Pythorch有 released命名张量的实验支持:即其维数为 有名字而不是简单的数字索引。这是个好消息,但是 还有一些粗糙的边缘。以你的名字为例 硬编码的字符串字面值无处不在;键入错误(例如'hieght')可能会破坏 以运行时未捕获的意外方式编写代码。在

torchsaber是命名张量的最小语法糖。它的目标是 给你力量(无限力量!)允许所有尺寸操作 通过名称来完成,而不是通过数字索引或硬编码字符串文本。 维度及其操作是 first-class对象 该接口与Pythorch面向用户的API清晰地结合在一起。例如,上面的 代码段变成:

fromtorchsaberimportdimsbatch,channel,height,width,features=dims('batch','channel','height','width','features')images=torch.randn|batch(10)+channel(3)+height(64)+width(64)flipped=images.permute(~width,~height)cropped=flipped|height[:32]+width[:32]flatten=cropped.flatten([~height,~width],~features)gray=flatten.sum(dim=~channel)/3.

我所说的“最小”是指整个实现大约有100行代码。在

我能用一下吗?在

当然!最简单的学习方法是阅读顶部的大评论 torchsaber.py。这是一个有文化的医生!然后pip install torch torchvision torchsaber和{}然后尽情享受。火炬手试图成为 兼容the named tensor docs和 应该和操作员一起工作 supported 通过命名张量。在

然而,由于命名张量是实验性的,所以torchsaber也是。real 该项目的目标是引发一些关于人性化设计的讨论 为了将来的张量程序。在

(一些!)参考文献

这是一份以前工作的非详尽清单(其中许多都有自己的工作) 你可以参考的书目

More说,是吗?在

打开一个问题,提交一个公关,给我发电子邮件!在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Admob不使用webview   Java Wicket表单:序列化对象类“myClassName”时出错   java googledriveapi更新文件与我的帐户管理员   java简单框架未知xml标记解析   java如何使用主类和用户获取Spark应用程序ID   java如何更改自定义属性的值?   java有没有办法在jMock中找到未使用的期望值?   gradle运行任务的java文档?   java通过使用数组来存储文本文件的行,通过覆盖来删除文本文件中的行   用于表达式语言注入的java利用负载   java IDEStyle程序运行   java在运行时启用/禁用Springws   爪哇芦苇。formatNumber NullPointException   java为什么我的代码无法检测两个动态实体之间的碰撞?