我将解释我的问题:
我想使用一键编码来表示每个样本。如果考虑对代码较少的那些样本进行填充操作,则表示形式应为800x600矩阵。
将此新表示形式提供为网络的输入,意味着将每个矩阵展平为大小为800x600(460.000值)的向量。
最后,数据集应包含50.000个大小为460.000的向量。
现在,我有两个注意事项:
答案 0 :(得分:0)
为什么不使用NLP中使用的常规模型?
可以通过嵌入矩阵来翻译这些事件。 然后,您可以使用LSTM(或GRU或RNN或双边LSTM)表示事件链,使用LSTM代替常规网络的区别在于,您使用同一模块重复N次。 因此,您的输入实际上不是460,000,而是内部的事件A间接帮助您了解事件B。这是因为LSTM具有一个模块,可针对链中的每个事件重复其自身。
您在这里有一个示例: https://www.kaggle.com/ngyptr/lstm-sentiment-analysis-keras
广义上讲,我将要做以下工作(使用Keras伪代码):
unique_events = list (set ([event_0, ..., event_n]))
You can perform the translation of a sequence with:
seq_events_idx = map (unique_events.index, seq_events)
sequences_pad = pad_sequences (sequences, max_seq)
input_ = Input (shape = (max_seq,), dtype = 'int32')
embedding = Embedding (len(unique_events),
dimensions,
input_length = max_seq,
trainable = True) (input_)
lstm = LSTM (128, input_shape = (max_seq, dimensions), dropout = 0.2, recurrent_dropout = 0.2, return_sequences = True) (embedding)
out = Dense (10, activation = 'softmax') (lstm)
我认为这种类型的模型可以帮助您并提供更好的结果。