自定义对角化+可训练的Tensorflow层

2024-09-28 01:31:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将下面的函数编码到TS层中。设x为d维向量。
x->;tf.linalg.diag(x)*A+b

其中A是可训练的dxd矩阵,b是可训练的(d维)向量

如果A和b不存在,我会使用Lambda层,但因为它们是。。。我该怎么办呢


p.s.:我不想给lambda层喂食教育用的灌水器:

Lambda(lambda x: tf.linalg.diag(x)))

进入一个具有“身份”激活的完全连接层。(我知道这是可行的,但它并不能帮助我真正学会如何解决这个问题:)


Tags: lambda函数gt编码tf身份矩阵向量
1条回答
网友
1楼 · 发布于 2024-09-28 01:31:32

您可以创建自定义层并将函数放入调用方法中

class Custom_layer(keras.layers.Layer):

    def __init__(self, dim):
        super(Custom_layer, self).__init__()
        self.dim = dim

        # add trainable weight
        self.weight = self.add_weight(shape=(dim,dim),trainable=True)
        # add trainable bias
        self.bias = self.add_weight(shape=(dim))

    def call(self, input):
        # your function
        return (tf.linalg.diag(input)*self.weight) + self.bias
    def get_config(self):
        config = super(Custom_layer, self).get_config()
        config['dim'] = self.dim
        return config

和普通图层一样使用它,在使用它的时候给它加上尺寸参数

my_layer = Custom_layer(desire_dimension)
output = my_layer(input)

相关问题 更多 >

    热门问题