swift - Swift MPSCNNConvolution - 权重都设置为 1,输出不应该和输入一样吗?
问题描述
试图弄清楚如何使用MPSCNNConvolution
. 我有一个 4 x 3 的图像和一个 4 x 3 的内核。我将所有权重设置为 1,将所有输入设置为 1,并且我有点希望将所有 1 都返回。我得到的是
12 9 6 3
8 6 4 2
4 3 2 1
问题是我不知道它是否应该表现得像这样。我已经翻遍了我能找到的所有 Apple 文档、每一篇在线文章、每一个 github 存储库,但我找不到任何说明当层设置正确时期望什么样的输出。
该模式适用于不同大小的图像。一个 3 x 2 给我
6 4 2
3 2 1
一个 2 x 2 给了我
4 2
2 1
我已经将我的“最小”示例推到了github。它不小。Xcode 12.4 不再支持 Float16,因此有用于在 Float16 和 Float32 之间浮动的实用程序代码,以及用于卷积的所有复杂设置,还有更多用于尝试解除不安全指针的代码。
我的具体问题:这个输出“只是正常行为”MPSCNNConvolution
吗?这个函数/算法有名字吗,我可以查一下吗?
解决方案
的文档MPSCNNConvolution
有点混乱。对于外行来说,这似乎MPSCNNConvolution
是一种包含卷积核的容器。不是这种情况。MPSCNNConvolution
本身就是一个内核。具体来说,它对内核窗口下的所有输入值进行加权和求和。只是一个直接的总和,没有平均或最大值。您所看到的是内核从 (0, 0) 开始并滑离右边缘并最终滑离底部边缘的结果。
在输入图像上设置内核偏移和剪辑矩形,并且与内核和所有其他的MPSCNNConvolution
工作方式相同MPSCNNPooling*
推荐阅读
- python - 使用 dict 作为函数的输入,但只接受函数需要的参数
- c# -
和 xmlns:local - authentication - 通过 CMD 使用密码作为参数的 Tectia SSH 登录
- google-sheets-api - 如何将日期转换为 Google 表格中的文本
- java - Java - 为什么字符串拆分为空字符串给我一个非空数组?
- r - R循环从多个数据框中选择特定列
- angular - 如何处理 Angular 中的响应?
- python - Django 何时加载应用程序?
- javascript - 检查 2 个输入和启用按钮的变化
- r - mlflow R 安装 MLFLOW_PYTHON_BIN