tf.layers.dense内部的梯度计算优化?

时间:2018-09-26 15:54:56

标签: tensorflow

我正在尝试训练composer install。以下两个表达式作为生成器的最后一层,其功能有所不同:

  1. WGAN-GP
  2. tf.layers.dense(x,dim,tf.nn.sigmoid)

第一个导致稳定的训练过程并最终收敛,而第二个导致波动性损失然后爆发到Nan。但是,我看不出这两个表达式之间有任何区别。所以我想知道为什么会这样。

1 个答案:

答案 0 :(得分:0)

如果设置纯测试,则两个表达式将返回相同的结果。造成差异的必须是代码,网络或设置中的其他内容。这是要验证的测试代码。

import numpy as np
import tensorflow as tf

x = tf.ones([1, 10])
op1 = tf.layers.dense(x, 10, tf.nn.sigmoid, kernel_initializer=tf.initializers.ones)
op2 = tf.nn.sigmoid(tf.layers.dense(x, 10, None, kernel_initializer=tf.initializers.ones))

sess = tf.Session()
sess.run(tf.global_variables_initializer())
r1 = sess.run(op1)
r2 = sess.run(op2)
assert np.array_equal(r1, r2)

如果断言失败,则说明您的安装或硬件有问题。