问题标签 [einops]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7687 浏览

python - Pytorch 在通道维度上的最大池化

我试图用 Pytorch 构建一个 cnn,并且在最大池化方面遇到了困难。我拿了斯坦福大学的cs231n。我记得,maxpooling 可以用作维度扣除步骤,例如,我有这个 (1, 20, height, width) 输入 ot max_pool2d(假设我的 batch_size 是 1)。如果我使用 (1, 1) 内核,我希望得到这样的输出:(1, 1, height, width),这意味着内核应该在通道维度上滑动。但是,在检查 pytorch 文档后,它说内核在高度和宽度上滑动。感谢 Pytorch 论坛上的 @ImgPrcSng,他告诉我使用 max_pool3d,结果效果很好。但是在 conv2d 层的输出和 max_pool3d 层的输入之间仍然存在一个 reshape 操作。所以很难聚合成一个nn.Sequential,所以我想知道有没有另一种方法可以做到这一点?

0 投票
1 回答
130 浏览

torch - Einops 重新排列函数基本功能

我正在尝试理解用于张量重新排序的 einops 语法,但不知何故错过了重点

如果我有以下矩阵:

我了解以下命令的作用:

但我无法真正理解以下内容:

任何帮助,将不胜感激

0 投票
1 回答
49 浏览

python - 从图像块中生成概率

我正在使用 size 的图像512x512。使用einops补丁大小为32. 总体而言,补丁的数量是256,换句话说,我们得到了一个大小为 的新“图像” 256x1024

由于该图像实际上是分割问题的掩码,因此该图像实际上仅包含 4 个值(4 类):0用于背景、1用于第一类、2用于第二类、3用于第三类。

我的目标是获取每个补丁,并为每个类计算C以下内容:

此补丁中的像素数/标记的像素数C

这应该给我一个大小为 4 的数组,其中第一个条目是补丁中的像素总数(1024)超过背景像素数(标记为 0),第二个、第三个和第四个条目是相同的,但对于对应的类。

理论上,我知道我需要遍历每个补丁,然后计算当前补丁中每个类的像素数,然后除以1024. 这样做256正是我想要的。问题是我有(非常)大量的图像需要为此执行此操作,并且大小512只是使问题更简单的一个示例,因此 for 循环是不可能的。

我知道我可以使用 numpy 得到我想要的结果。我都试过了:numpy.apply_over_axesnumpy.apply_along_axis我不知道哪一个更适合这项任务,还有numpy.where一个我不知道它是如何应用在这里的。

这是我所做的:

两件事情:

  1. 我希望输出是256x4沿第二个轴的每个数组总和为 1 的位置。
  2. 有没有更快/更好/pythonic的方法来做到这一点,最好是矢量化的?

编辑:我忘了加总和,所以现在我得到了256x4.

0 投票
1 回答
52 浏览

python - 使用 Einsum 执行简单的自定义操作

我是新手Einsum并且想要一个特殊情况 -einsum用于将矩阵的所有元素相互相乘;说给定一个2D矩阵:-

跨轴乘以元素获得(16,)然后再次将它们相乘以获得(1,)标量。这类似于:-

我尝试使用类似的东西: -

但这绝对不是我想要的,因为它不是乘法

我们怎么能用 编写这么简单的操作einsum呢?einsum 不能处理每一个操作,而是针对一些困难情况进行优化吗?