重量由keras计算,该值用于硬件。 尽管我们能够计算出重量,但是由于验证不正确,我们还是遇到了麻烦。 输入是输入[1,0,1]并学习的RNN,当输入[1,0]时,输出为1。
model = Sequential()
model.add(SimpleRNN(2, activation=actfunc,
batch_input_shape=(None, timesteps, 1)))
model.add(Dense(1))
weight
U
(1, 2)
4.165456593036651611e-01 5.782085061073303223e-01
W
(2, 2)
8.230857849121093750e-01 5.847921371459960938e-01
6.210833787918090820e-01 -8.168703913688659668e-01
b
(2,)
6.841279566287994385e-02
1.096717920154333115e-02
V
(2, 1)
1.339856624603271484e+00
-4.971474707126617432e-01
c
(1,)
5.702519416809082031e-02
根据RNN的公式计算
ot = tanh(Uxt + Wht-1 + b)
它的值是
Uxt=
0.416545659303665
0.57820850610733 × 1 0
=
0.416546 0
0.578209 0
Wht是第一项,0向量。 然后加上偏差b
0.484959 0.0684128
0.5891762 0.0109672
传递激活函数tanh,
0.450206147 0.068306268
0.529302863 0.01096676
它变成了。然后穿过密集层,
1.33001979377
但是,预测值显示
0.999997
我认为RNN的计算部分是错误的,但是我不知道如何检查keras内部进行了哪种计算。请告诉我为什么支票不匹配或如何核对里面的计算。