【问题标题】:Weights/bias initialization with constants cntk使用常量 cntk 初始化权重/偏差
【发布时间】:2017-05-31 09:27:59
【问题描述】:

有没有办法用常数矩阵初始化权重/偏差。例如,我可以用 Dense(hidden_​​layers_dim_1, init=W) 代替 Dense(hidden_​​layers_dim_1, init=he_normal()),其中 W 是浮点矩阵。

【问题讨论】:

  • 因为我没有得到回复,所以我记下了对我有用的解决方案 - 我在 Examples/common/nn.py 中添加了一个新的线性层,它使用初始权重和偏差。 def linear_layer_initialized(input_var, output_dim, initW, initb): times_param = parameter(shape=((input_var.shape[0], output_dim)), init=np.array(initW, dtype=np.float32)) bias_param = parameter(shape=(output_dim), init=np.array(initb, dtype=np.float32)) t = times(input_var, times_param) return bias_param + t

标签: cntk


【解决方案1】:

Update-1

Dense 层现在似乎接受了一个 numpy 数组和常量值作为初始权重 (cntk-2.0rc3),根据参数文档 here


图层还不能采用初始权重值。但是,您可以在任何适当的层中使用 init_bias 命名参数传入初始偏差值。但是,如果您必须使用初始权重值,我猜您已经创建了一个变量并像您所做的那样定义了自己的网络。即

features = <your_input_var>
W = cntk.Parameter((<proper_shape>), init=<intial_value>)
B = cntk.Parameter((<proper_shape>), init=<intial_value>)

output = features @ W + B;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-31
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2017-06-08
    • 1970-01-01
    • 2018-07-09
    相关资源
    最近更新 更多