【问题标题】:How to initialize bias with a pre-defined vector in tensorflow [duplicate]如何使用张量流中的预定义向量初始化偏差[重复]
【发布时间】:2022-11-23 23:44:38
【问题描述】:

如何使用预定义向量(无常数或随机)初始化偏差?例如,我想在范围内展开矢量[-1, 1].是这样的:
tf.linspace(-1, 1 , shape, name="linspace")

到目前为止,我所做的是:

def b_init(shape):
    return tf.keras.initializers.Constant(tf.linspace(-1, 1 , shape,  name="linspace"))

我正在寻找可以用与预定义类相同的方式调用的东西,例如:

b_initializer = tf.keras.initializers.HeNormal(seed=initialization_number)

【问题讨论】:

    标签: tensorflow keras tf.keras keras-layer initializer


    【解决方案1】:

    您可以按照 keras 文档中的指南进行操作:Creating custom initializers

    简单的可调用对象

    您可以将自定义可调用对象作为初始值设定项传递。它必须采取 参数 shape(要初始化的变量的形状)和 dtype(dtype 生成值):

    def my_init(shape, dtype=None):
        return tf.random.normal(shape, dtype=dtype)
    
    layer = Dense(64, kernel_initializer=my_init)
    

    在您的情况下,您可以简单地使用以下函数:

    def linspace_init(shape, dtype=None):
        return tf.linspace(-1, 1, shape, dtype=dtype)
    

    并将其用作图层中的初始化程序。

    layer = Dense(64, kernel_initializer=linspace_init)
    

    如果你绝对想要一个对象而不是一个简单的函数,你只需要继承 Initializer 类:

    class LinSpace(tf.keras.initializers.Initializer):
    
        def __call__(self, shape, dtype=None)`:
          return return tf.linspace(-1, 1, shape, dtype=dtype)
    

    【讨论】:

      猜你喜欢
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多