【问题标题】:Practical meaning of output in simple recurrent neural network简单循环神经网络输出的实际意义
【发布时间】:2020-09-29 05:57:29
【问题描述】:

我正在尝试学习 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=3features。

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

2 不等于D,这是许多功能。我猜,model.predict() 不会对下一个数据点做出预测。如果model.predict()对下一个数据点进行预测,结果的形状应该是(1, D)

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

【问题讨论】:

    标签: tensorflow machine-learning keras recurrent-neural-network


    【解决方案1】:

    你应该注意模型。

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

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

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

    【讨论】:

    • 如果我设置K = D,Yhat的形状将是(1, 3),我能理解model.predicted()函数得到的结果代表下一个数据点的预测值吗?
    • @TianyiWang 如果所有的训练数据都让模型预测下一个数据点,那么是
    猜你喜欢
    • 2016-08-18
    • 2016-11-12
    • 1970-01-01
    • 2016-03-06
    • 2017-02-16
    • 2016-03-13
    • 2017-02-19
    • 2022-01-08
    • 2011-02-09
    相关资源
    最近更新 更多