问题标签 [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.
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,所以我想知道有没有另一种方法可以做到这一点?
torch - Einops 重新排列函数基本功能
我正在尝试理解用于张量重新排序的 einops 语法,但不知何故错过了重点
如果我有以下矩阵:
我了解以下命令的作用:
但我无法真正理解以下内容:
任何帮助,将不胜感激
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_axes
但numpy.apply_along_axis
我不知道哪一个更适合这项任务,还有numpy.where
一个我不知道它是如何应用在这里的。
这是我所做的:
两件事情:
- 我希望输出是
256x4
沿第二个轴的每个数组总和为 1 的位置。 - 有没有更快/更好/pythonic的方法来做到这一点,最好是矢量化的?
编辑:我忘了加总和,所以现在我得到了256x4
.
python - 使用 Einsum 执行简单的自定义操作
我是新手Einsum
并且想要一个特殊情况 -einsum
用于将矩阵的所有元素相互相乘;说给定一个2D
矩阵:-
跨轴乘以元素获得(16,)
然后再次将它们相乘以获得(1,)
标量。这类似于:-
我尝试使用类似的东西: -
但这绝对不是我想要的,因为它不是乘法
我们怎么能用 编写这么简单的操作einsum
呢?einsum 不能处理每一个操作,而是针对一些困难情况进行优化吗?