我正在尝试训练composer install
。以下两个表达式作为生成器的最后一层,其功能有所不同:
WGAN-GP
tf.layers.dense(x,dim,tf.nn.sigmoid)
第一个导致稳定的训练过程并最终收敛,而第二个导致波动性损失然后爆发到Nan。但是,我看不出这两个表达式之间有任何区别。所以我想知道为什么会这样。
答案 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)
如果断言失败,则说明您的安装或硬件有问题。