【发布时间】:2020-04-17 00:08:52
【问题描述】:
我看到调用模型和调用 predict 方法之间的不同行为。似乎 predict 会忽略所有随机生成的值。
在这个notebook 中,我试图将随机过程引入我的网络。
基本上,对于每个条目,我将其复制 10 次,并为每个切片添加一些随机噪声。
当使用张量调用模型时,我看到了预期的输出,其中输入条目会产生一些噪音。
在相同的数据上调用 predict 时,我看到的只是相同的输出。
所以我保存了模型权重,并将权重加载到没有任何噪音的类似模型中以验证我的假设。实际上,在没有噪声的情况下,它在调用和预测时产生相同的输出,并且在调用 predict 时与之前的噪声模型产生相同的输出。
为什么我会看到这种行为?是不是说用fit训练网络时,也会忽略随机值?
【问题讨论】:
-
我认为
predict可能使用的是模型的图形编译版本,其中批处理维度为None,因此在foo函数的分支中采用第一条路径。你为什么不干脆做return x + tf.random.normal(K.shape(x))? -
这很好。我对 TF 中的这个图形概念仍然很陌生。起初我使用的是 K.random_normal(K.int_shape(x)),它抛出了异常,因为有些维度是无的。我会试试你的建议。
-
@jdehesa 太好了!我需要使用 K.shape 而不是 K.int_shape 因为我需要符号尺寸。现在预测并调用同意输出。您的评论与答案一样好,因此您可以根据需要在此处粘贴答案。
标签: python tensorflow keras