警告:tensorflow:初始化程序的默认stddev值将从" 1 / sqrt(vocab_size)"至" 1 / sqrt(维度)" 2017/02/25之后

时间:2017-08-08 01:37:20

标签: python tensorflow deep-learning

设置深度模型时,我收到此警告消息。

警告信息

  

警告:tensorflow:初始化程序的默认stddev值将更改   来自" 1 / sqrt(vocab_size)"至" 1 / sqrt(维度)" 2017/02/25之后。

我的代码

deep_columns = [
  tf.contrib.layers.embedding_column(workclass, dimension=8),
  tf.contrib.layers.embedding_column(education, dimension=8),
  tf.contrib.layers.embedding_column(gender, dimension=8),
  tf.contrib.layers.embedding_column(relationship, dimension=8),
  tf.contrib.layers.embedding_column(native_country, dimension=8),
  tf.contrib.layers.embedding_column(occupation, dimension=8),
  age, education_num, capital_gain, capital_loss, hours_per_week
]

1 个答案:

答案 0 :(得分:1)

如果您没有明确give an initializer functionembedding_columns,则张量流将使用默认初始值设定项,这是一个法线,0平均值和1/sqrt(vocab_size)标准偏差为以下代码:

if initializer is None:
      ...
      stddev = 1 / math.sqrt(sparse_id_column.length)
      initializer = init_ops.truncated_normal_initializer(
          mean=0.0, stddev=stddev)

这只是一个警告,默认的初始化函数在不久的将来会稍微改变一下(虽然看起来它们在截止日期前有点迟了)。没有什么重要的,也不应该影响你的工作(可以花费更多或更少的时间来收敛,但差异应该是不明显的。)

如果警告让您感到不安,则可以在创建嵌入列时提供initializer function explicitly,也可以通过将详细程度设置为错误来忽略警告。 tf.logging.set_verbosity(tf.logging.ERROR)