【发布时间】:2018-04-10 17:23:15
【问题描述】:
我将 LSTM 结果与 Keras/Tensorflow 计算和 Numpy 计算进行了比较。但是,结果略有不同:
Numpy: [[ 0.16315128 -0.04277606 0.26504123 0.08014129 0.38561829]]
Keras: [[ 0.16836338 -0.04930305 0.25080156 0.08938988 0.3537751 ]]
Keras的LSTM实现没有使用tf.contrib.rnn,而是Keras直接管理参数,tf.matmul用于计算。我找到了Keras的对应实现,用Numpy尝试了同样的计算,但数值如上图略有不同。
我已经检查了几次公式,看起来都一样。唯一的区别是tf.matmul 或np.dot 之间的区别。可能小数点计算方法有些不同。即便如此,我认为结果差异太大。最大的差异约为 10%。我想将 Numpy 计算与 tensorflow 计算相匹配。如果有人能给我一些提示或指出正确的实现方式,我将不胜感激。
Keras 实现和我自己实现的 Numpy 代码:
【问题讨论】:
-
如果您多次运行这些实现中的任何一个,我希望您在每次运行时都会得到不同的答案,因为随机初始化。对每个模型进行尝试,看看从一次运行到下一次运行的典型差异是什么。我的猜测是,在这种情况下,这些数字看起来非常合理。
-
@DavidParks 你是对的。但我每次得到的结果都略有不同,这就是我问的原因。
标签: tensorflow keras lstm