首页 文章

RNN的输入数据格式

提问于
浏览
0

我很困惑如何将一系列数据编码为LSTM RNN的输入 .

在vanilla DNN中,每个标签都有一个输入 . RNN中的“输入”是什么?它是否必须是一组(或序列)数据,以便训练与标签相关的顺序事件?

我混淆了如何编码顺序信息,因为似乎应该有多个输入与给定标签相关联 .

3 回答

  • 2

    我们在代码中绘制一个例子 .

    假设我们有一些句子,句子中的每个单词都被编码为一个向量(也许来自word2vec的向量) .

    假设我们想要将每个句子分类为两个类(0,1)中的一个 . 我们可以像这样构建一个简单的分类器:

    import numpy as np
    from keras.models import Sequential
    from keras.layers import LSTM, Dense
    
    # each example (of which we have a 100) is a sequence of 10 words and
    # each words is encoded as 16 element vectors
    
    X = np.random.rand(100, 10, 16) 
    y = np.random.choice(2, 100)
    
    model = Sequential()
    model.add(LSTM(128, input_shape=(10, 16))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(loss='binary_crossentropy', optimizer='sgd')
    
    # fit model
    model.fit(X, y, epochs=3, batch=16)
    
  • 1

    似乎应该有多个输入与给定标签相关联

    是的,你是对的 . 实际上你的输入需要是一个3D矩阵 . 例如,如果您有n个序列,则每个序列的长度为m,并且每个序列数据都具有d个特征,您的RNN的输入必须是维度(n,m,d) .

  • 0

    例如,如果您有一个时间序列 (X1,..,Xt) 并且您希望训练预测器以预测地平线为1并使用长度为3的序列,则您的输入和输出将为:

    [[X1,X2,X3]]    [X4]
    [[X2,X3,X4]]    [X5]
    ...
    [[Xt-3,Xt-2,Xt-1]] [Xt]
    

    因此,存在t-3序列,该序列中的每一个具有长度3并且具有1个特征 . 尺寸应为(t-3,3,1) .

相关问题