python - 如何在 conv2d (PyTorch) 中动态更改内核的大小?
问题描述
如何在 PyTorch 中设置动态内核大小?
我正在将图像传递给我的网络,并且我想将我的内核设置为根据输入的偏心率来改变大小和步幅。另外,我想使用圆形而不是平方内核。
这听起来可能吗?我试图谷歌但没有运气。任何帮助将不胜感激!
编辑:更清楚一点:输入图像的大小都相同,一旦网络初始化,我不需要更改内核大小。我只需要一个行为或多或少像这样的转换层(底部图像)。基本上,内核会根据离心率改变大小,以便在中心具有高分辨率,而在外围具有越来越低的分辨率(通过汇集更大和重叠的区域)。
解决方案
是的,您可以在转发功能中轻松做到这一点..
例如,在这段代码中,我调用了一个布尔函数,如果结果为 True,我正在使用 conv1,否则我正在使用 conv2。
def forward(self, x):
"""
In the forward function we accept a Tensor of input data and we must return
a Tensor of output data. We can use Modules defined in the constructor as
well as arbitrary operators on Tensors.
"""
if boolean_func(x):
x = self.conv1(x)
else:
x = self.conv2(x)
out = self.dense1(x)
return out
在您的情况下,您可以定义两个卷积层,并根据输入条件使用您想要的一个。
在反向传播过程中,由于存储在图中的计算信息,您使用的层的权重将在没有任何干预的情况下更新。
推荐阅读
- mysql - 带括号和不带括号的 MySQL 给出不同的结果
- web - 如何在任何嵌入式代码中禁用图像
- android - 如何在 recyclerview 中使用运动布局
- c# - ASP.NET C# 中的字计数器桌面应用程序
- c# - 如何将DevExpress gridControl中的RepositoryItemPictureEdit中的图像保存到sql数据库
- java - Java 安卓 GcmTaskService
- reactjs - React JS - 请求的资源上不存在“Access-Control-Allow-Origin”标头。跨域资源错误
- docker - 在 Docker Compose 中,来自 .env 的环境变量是捆绑在映像中还是仅可用于容器?
- testing - 如何同时使用 PHPUnit 依赖特性和 Laravel WithTransactions 特性?
- angular - 在不同的组件中使用服务不起作用