gpt4 book ai didi

keras - keras NonNeg 权重约束的等价物是什么?

转载 作者:行者123 更新时间:2023-12-04 13:54:32 27 4
gpt4 key购买 nike

Keras 可以选择强制学习模型的权重为正:

tf.keras.constraints.NonNeg()
但是我在 pytorch 中找不到与此等效的东西,有谁知道如何强制我的线性模型的权重全部为正数?
尝试在其他论坛上问这个问题,但答案没有帮助。
假设我有一个非常简单的线性模型,如下所示,我应该如何更改它?
class Classifier(nn.Module):

def __init__(self,input , n_classes):
super(Classifier, self).__init__()

self.classify = nn.Linear( input , n_classes)

def forward(self, h ):

final = self.classify(h)
return final
我想做的正是 NonNeg() 所做的,但在 pytorch 中,不想改变它所做的。
这是在 keras 中 NonNeg 的实现:
class NonNeg(Constraint):
"""Constrains the weights to be non-negative.
"""

def __call__(self, w):
w *= K.cast(K.greater_equal(w, 0.), K.floatx())
return w

最佳答案

你可以用这种方式定义你自己的层......但我很好奇你为什么要这样做

import torch
import torch.nn as nn

class PosLinear(nn.Module):
def __init__(self, in_dim, out_dim):
super(PosLinear, self).__init__()
self.weight = nn.Parameter(torch.randn((in_dim, out_dim)))
self.bias = nn.Parameter(torch.zeros((out_dim,)))

def forward(self, x):
return torch.matmul(x, torch.abs(self.weight)) + self.bias
基本上,它使用权重的绝对值。

关于keras - keras NonNeg 权重约束的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64831567/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com