所以我的任務(wù)是預(yù)測(cè)序列。我在時(shí)間 t 有 x,y,z 值,它們是浮點(diǎn)型。我必須預(yù)測(cè)在時(shí)間 (t + 1) 具有值 x,y,z 的序列。TIME_STEP = 10N_FEATURES = N_CLASSES = 3LEARNING_RATE = 0.01EPOCHS = 50BATCH_SIZE = 10x = tf.placeholder(tf.float32, shape = [None, N_FEATURES], name = 'name')y = tf.placeholder(tf.float32, shape = [N_CLASSES], name = 'labels')然后我有我的 lstm 模型,它看起來(lái)像: x = tf.transpose(x, [1, 0]) x = tf.reshape(x, [-1, num_features]) hidden = tf.nn.relu(tf.matmul(x, self.h_W) + self.h_biases) hidden = tf.split(hidden, self.time_step) lstm_layers = [tf.contrib.rnn.BasicLSTMCell(self.hidden_units, forget_bias=1.0) for _ in range(2)] lstm_layers = tf.contrib.rnn.MultiRNNCell(lstm_layers) outputs, _ = tf.contrib.rnn.static_rnn(lstm_layers, hidden, dtype = tf.float32) lstm_output = outputs[-1]最后我定義了損失函數(shù)和優(yōu)化器loss = tf.reduce_mean(tf.square(y - y_pred))opt = tf.train.AdamOptimizer(learning_rate = LEARNING_RATE).minimize(loss)現(xiàn)在我想用前 10 個(gè)值來(lái)預(yù)測(cè)第 11 個(gè)值。所以我運(yùn)行會(huì)話for time in range(0, len(X)): sess.run(opt, feed_dict = {x : X[time: time + TIME_STEP ], y : Y[time + TIME_STEP + 1]})但是當(dāng)我檢查這個(gè)函數(shù)的損失時(shí),它有很大的價(jià)值,比如 99400290.0,它會(huì)隨著時(shí)間的推移而增加。這是我第一次預(yù)測(cè)序列,所以我想我一定遺漏了一些重要的東西
1 回答

莫回?zé)o
TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
是的,您應(yīng)該標(biāo)準(zhǔn)化您的真實(shí)世界輸入數(shù)據(jù),并且它應(yīng)該使用您在訓(xùn)練集上使用的相同縮放(相同參數(shù))。
原因是,現(xiàn)在您的模型已接受訓(xùn)練以接受特定形狀和比例的輸入,并且要使其按預(yù)期執(zhí)行,您必須將測(cè)試輸入擴(kuò)展到它。
(很抱歉將此作為答案發(fā)布,沒有足夠的代表發(fā)表評(píng)論)
添加回答
舉報(bào)
0/150
提交
取消