首页 > 解决方案 > 简单循环神经网络输出的实际意义

问题描述

我正在尝试学习 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()对下一个数据点进行预测,结果的形状应该是(1, D)

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

标签: tensorflowmachine-learningkerasrecurrent-neural-network

解决方案


你应该注意模型。

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

如果您希望它具有其他尺寸,请更改Dense图层的输出大小。从x = tf.keras.layers.Dense(K)(x)x = tf.keras.layers.Dense(D)(x)

模型是否正确预测/未正确预测的问题取决于多个问题,例如训练数据、超参数等。


推荐阅读