【问题标题】:Should I set trainable=True when using embedding?使用嵌入时我应该设置 trainable=True 吗?
【发布时间】:2018-12-29 06:40:18
【问题描述】:

当我使用RNN进行分类时,我应该在初始化嵌入时设置trainable=True吗?

我不确定在初始化嵌入时是否应该设置trainable=True。 在正常情况下,如果没有预训练的嵌入文件,我应该像这样初始化词嵌入矩阵:

bound = -1 # for example
initializer = tf.random_uniform_initializer(minval=-bound, maxval=bound)
embedding = tf.get_variable(name=variable_name,
                        shape=[vocab_size, embedding_size],
                        dtype=tf.float32,
                        initializer=initializer)

并且参数trainable默认为True

原来的样子: 一些 -0.2300489 , -0.7200954 , 0.5842655 , 0.7981529 , -0.7432661 ... -0.12576556, 0.3133614 , -0.78932405, 0.38539863, 0.5543554 我认为它有效,因为所有值都在 [-1,1] 中。

但是,当经过 RNN-Classifiy 模型训练后,原始嵌入值将变为: 一些 6.2576456 5.708158 -6.7240534 -7.060843 -6.9045954 ... 0.65268683 6.7722726 5.766225 6.743621 -5.3276224 一 -0.9980886 0.8692293 -0.24473047 0.40041256 -0.8348596 ... -0.9133856 -0.6819365 -0.44985628 -0.43600297 0.51928043 帮助 -3.8815696 -6.9417324 -7.086827 -2.7665734 3.8522656 ... 2.8540928 6.841772 2.7118142 7.89535 1.4688607

这是正常的还是我应该正常化它?

【问题讨论】:

    标签: tensorflow word embedding


    【解决方案1】:

    我应该在初始化嵌入时设置 trainable=True 吗?

    是的,否则权重只是您初始化的随机值。通过设置 trainable True,您可以让网络自行学习嵌入。

    这是正常的还是我应该正常化它?

    是的,嵌入权重具有指定值是正常的,除非您对其进行了约束。如果您希望网络具有较小的权重,您可以使用正则化,例如 l2-regularization

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 2012-04-09
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多