简单递归神经网络输出的实际意义

Practical meaning of output in simple recurrent neural network

我正在尝试学习 RNN 模型。这是我构建的模型:

N = 3 # number of samples
T = 10 # length of a single sample
D = 3 # number of features
K = 2 # number of output units
X = np.random.randn(N, T, D)

# Make an RNN
M = 5 # number of hidden units

i = tf.keras.layers.Input(shape=(T, D))
x = tf.keras.layers.SimpleRNN(M)(i)
x = tf.keras.layers.Dense(K)(x)

model = tf.keras.Model(i, x)

Yhat = model.predict(X[0].reshape(1, -1, D)) # output: array([[-0.67114466, -0.65754676]], dtype=float32)

我不明白Yhat的意思。这里我将 X 视为顺序数据:

[data_point0...data_pointT], [data_point0...data_pointT], [data_point0...data_pointT]

每个数据点都有 D=3 特征。

这里Yhat.shape==(1, 2).

2 不等于 D,这是一些特征。我想,model.predict() 不会对下一个数据点做出预测。如果model.predict()对下一个数据点做预测,结果的shape应该是(1, D).

那么Yhat的实际意义是什么?

你要注意型号。

RNN 层之后,您使用了 Dense 层,其中输出维度为 2! 所以你通过 运行 和 model.predict() 得到的输出大小是好的。

如果您希望它有其他维度改变 Dense 层的输出大小。从 x = tf.keras.layers.Dense(K)(x)x = tf.keras.layers.Dense(D)(x)

模型是否 does/doesn 无法正确预测的问题取决于多个问题,例如训练数据、hyper-parameter 等