Tensorflow – 预测序列:什么是X和Y?

我有一个张量,需要使用Tensorflow的LSTM/RNN来预测序列中的下一个元素,同时考虑前5个元素。我应该如何输入X和Y?

从1 2 3 4 5,我想预测6

假设我的输入序列X是:

X = 1 2 3 4 5     6 7 8 9 10     11 12 13 14 15    ...

那么我的Y应该是:

Y = 2 3 4 5 6     7 8 9 10 11     12 13 14 15 16    ... ?

还是应该这样输入:

X = 1 2 3 4 5     2 3 4 5 6    3 4 5 6 7     ....

我的Y应该是:

Y = 6    7     8     ... ?

还是TensorFlow会自动处理这些?

我现在使用的是第一种方法,受到教程的启发,代码如下:

    x = tf.placeholder(tf.int32, [None, num_steps], name='input_placeholder')    y = tf.placeholder(tf.int32, [None, num_steps], name='labels_placeholder')    rnn_outputs = tf.reshape(rnn_outputs, [-1, state_size])    y_reshaped = tf.reshape(y, [-1])    logits = tf.matmul(rnn_outputs, W) + b    predictions = tf.nn.softmax(logits)    total_loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y_reshaped))

如果我请求预测(在实际代码中,时间步长为16,类别数量为14313,很抱歉):

        prevSlice = np.array([[1, 2 , 3 , 4, 5, 6 ,7, 8, 9 ,10, 11, 12, 13, 14, 15, 16]], dtype=np.string_)        feed_dict={g['x']: prevSlice}        preds, state = sess.run([g['preds'],g['final_state']], feed_dict)

我得到了多出15个的预测。或者我应该如何解释这些?我不需要对接下来的16个切片进行预测,只需要对下一个进行预测。

enter image description here


回答:

由于LSTM执行的是序列到序列的预测,这是否意味着你的预测器输出的是一个batch_size长度的序列,而不是单个时间步长?

简而言之,你会得到一个与预测大小相同的序列。

编辑:

def predict_point_by_point(model, data):    #根据最后一个真实数据序列预测每个时间步长,实际上每次只预测一步    predicted = model.predict(data)    predicted = np.reshape(predicted, (predicted.size,))    return predicted

你可以按照这个思路做一些调整,并为每个len(timestep)添加一个移动窗口,这样你输入到模型中的每个时间步长都会考虑到增加的一个时间步长,从而一次输出一个预测。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注