我是 rnns 的初学者,请考虑这个示例代码
from tensorflow import keras
import numpy as np
if __name__ == '__main__':
model = keras.Sequential((
keras.layers.SimpleRNN(5, activation="softmax", input_shape=(1, 3)),
))
X = [
[1, 2, 3],
[4, 5, 6]
]
y = [
[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0]
]
X = np.array(X)
X = np.reshape(X, (2, 1, 3))
y = np.array(y)
# print(X)
# print(y)
print(model.summary())
model.compile(optimizer=keras.optimizers.Adam(learning_rate=0.01),
loss="categorical_crossentropy")
model.fit(X, y, epochs=100)
p = model.predict(X)
print(p)
p = list(np.squeeze(p))
print(p)
print(np.sum(p,axis=1))
我正在使用一个简单的 rnn,批量大小 = 2、3 个输入特征和 1 个时间步长,因为激活是 softmax,最后一行打印 [1,1],因为 softmax 的预测总和为 1。但是当我更改层从 SimpleRNN 到
keras.layers.LSTM(5, activation="softmax", input_shape=
(1,3),recurrent_activation="softmax")
预测的总和不再是 1,这是为什么呢?