pytorch - 将内核过滤器限制为只有 -1、0 或 1 的条目?
问题描述
我的自动编码器模型学习像素值为 -1、0 或 1 的图像中最常见的模式。虽然我的模型运行良好,但解码落入浮点值介于 -1 和 1 之间的局部最小值。
无论如何,在 Pytorch 中我可以将内核过滤器限制为具有条目 -1、0 或 1 以观察更好的学习能力吗?
解决方案
你绝对可以这样做,但这可能是个坏主意。要将权重限制为特定值,您可以在每次训练迭代后简单地将权重设置为您想要的值,例如使用torch.clamp将它们设置为范围 [-1, 1]:
model.my_layer.weight.detach().clamp_(-1,1)
虽然上述方法在某些情况下可能有效,但您将权重离散化为仅 3 个可能值的问题将很难使用梯度进行优化,并且可能会导致很少甚至没有学习。
推荐阅读
- ruby - 如何将对象数组保存到ruby中的文件中?
- makefile - 导出带有美元符号的 makefile 变量
- reactjs - 如何使用 React 测试库为 useMutation 编写测试用例?
- c# - 在 Swagger 中生成响应错误 - .netCore Api
- java - 去除双向链表中的头部
- visual-studio-code - 为什么当我使用这个 textMate 时 VSCode 不突出显示任何内容?
- vue.js - Vuejs - 查找未使用的道具。事件和组件
- amazon-web-services - 如何将现有的 vpc 用于不同的项目?
- c# - 如何将选定的数据从网格传递到另一个空网格,然后将其存储在数据库表中?
- c - 简化递归函数