如何在conv2d (PyTorch)中动态改变内核的大小?

如何在PyTorch中设置一个动态的内核大小?

我正在传递图像到我的网络,我想设置我的内核改变大小和步幅作为输入的离心率的函数。我也想用圆而不是平方的核。

这听起来可能吗?我试过了,但运气不佳。任何帮助将真的非常感谢!

编辑:只是为了更清楚:输入的图像都有相同的大小,我不需要改变内核大小一旦网络被初始化。我只需要一个conv层的行为或多或少像这样(底部的图片)。基本上,内核会随着偏心度的变化而改变大小,以便在中心具有高分辨率,而在外围具有越来越低的分辨率(通过汇集更大和重叠的区域)。

###是的,你可以在正向函数中轻松做到。

例如,在这段代码中,我调用一个布尔函数,如果结果是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

在这种情况下,你可以定义两个转换层,并根据输入的条件使用你想要的转换层。

在反向传播过程中,由于图形中存储的计算信息,您使用的层的权值将在没有任何干预的情况下被更新。

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码