乘以零会导致训练期间的inf或nan

时间:2018-01-16 02:57:55

标签: tensorflow deep-learning

我正在尝试使用跳过连接来构建神经网络。但是有时候我想关掉它们,即它们应该仍然存在(出于形状原因),但我不希望传达任何信号。

E.g。我想要这样的东西:

for i, num_layers in reversed(list(enumerate(layers))):
    ...
    if skip_connection_list is not None:
        skip_connection = skip_connection_list[i]
        if self.config.skip_skip:
            skip_connection = tf.multiply(skip_connection,0)
        stack = tf.concat([l, skip_connection], axis=-1)

当我尝试训练时,我收到以下警告

  

E tensorflow/core/kernels/check_numerics_op.cc:157] abnormal_detected_host @0x10478c10a00 = {1, 0} LossTensor is inf or nan

使用其他号码,例如1,不会导致此问题。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在这种情况下,只需将skip_connection分配给零向量即可解决问题。这也可能对其他人有用,但这个解决方案非常笨拙,所以我暂时还没有回答这个问题。

for i, num_layers in reversed(list(enumerate(layers))):
    ...
    if skip_connection_list is not None:
        if self.config.skip_skip:
            skip_connection = tf.zeros_like(skip_connection_list[i])
        else:            
            skip_connection = skip_connection_list[i]
        stack = tf.concat([l, skip_connection], axis=-1)