【发布时间】:2023-02-26 07:13:39
【问题描述】:
我需要构建一个称为可学习参数或权重向量的神经网络。这样,只会生成一个向量并与数据相乘。我创建如下:
from tensorflow.keras.layers import Layer
from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import Model
class LearnableMultiplier(Layer):
def __init__(self, **kwargs):
super(LearnableMultiplier, self).__init__(**kwargs)
def build(self, input_shape):
self.kernel = self.add_weight(name='kernel',
shape=(input_shape[-1],),
initializer='glorot_uniform',
trainable=True)
super(LearnableMultiplier, self).build(input_shape)
def call(self, inputs):
return inputs * self.kernel
inputs = Input(shape=(64,))
multiplier = LearnableMultiplier()(inputs)
model = Model(inputs=inputs, outputs=multiplier )
我需要从 1 或 -1 的值中选择上面定义的矢量可学习参数。我的意思是与我的数据相乘的那个向量的每个值只能是 1 或 -1。那可行吗?我该怎么做?
【问题讨论】:
-
神经网络是用反向传播训练的,所以值必须是连续的,所以中间没有任何东西的 1 和 -1 应该是不可能的
-
@Caridorc 好的,如果我希望可学习参数的每个值都为零,那该怎么办?
-
这取决于你如何定义与零不同,0.0000001 与零不同吗?
-
不,例如,我认为 0.1 不同于零 @Caridorc
-
您可以尝试使用一个函数,给定从 0 到 1 的输入将给出接近 1 或 -1 的输出
标签: python deep-learning neural-network conv-neural-network tf.keras