根据论文中的说明对编码器-解码器进行建模

数据挖掘 Python 喀拉斯 rnn
2022-02-12 14:16:53

我是这个领域的新手,我正在阅读一篇论文“基于深度神经网络学习技术预测引用计数”。如果有人想重现结果,作者在那里描述了他们实现的代码。我试图这样做,但我不确定我是否成功。

这是他们的描述:

-RNN module - SimpleRNN
-Output dimension of the encoder - 512
-The output layer - Dense layer
-Activation function - ReLU
-Overfitting prevention technique - Dropout with 0.2 rate
-Epochs - 100
Optimization algorithm - RMSProp
Learning rate - 10^{-5}
Batch size - 256

这是我的实现。我不确定我创建的模型是否是序列到序列的。

epocsh = 100
batch_size = 256
optimizer = keras.optimizers.RMSprop(lr=0.00001)
model =  keras.models.Sequential([
    keras.layers.SimpleRNN(512, input_shape=[X_train.shape[0], X_train.shape[1]],
                           activation='relu', return_sequences=True, dropout=0.2),
    keras.layers.Dense(9)
])

model.compile(loss='mse', optimizer=optimizer, metrics=[keras.metrics.RootMeanSquaredError()])

这个模型的总结是:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
simple_rnn (SimpleRNN)       (None, 154521, 512)       266240    
_________________________________________________________________
dense (Dense)                (None, 154521, 9)         4617      
=================================================================
Total params: 270,857
Trainable params: 270,857
Non-trainable params: 0
_________________________________________________________________

任何帮助,将不胜感激。谢谢!

更新:这是数据集。

year  venue  c1  c2  c3  c4  c5  c6  c7  c8  c9  c10  c11  c12  c13  c14
1989    234   0   1   2   3   4   5   5   5   5    8    8   10   11   12
1989    251   0   0   0   0   0   0   0   0   0    0    0    0    0    0
1990    346   0   0   0   0   0   0   0   0   0    0    0    0    0    0

我需要将 c5 之前的所有列作为输入,并尝试预测其他 c(这是未来几年的引用计数)。

1个回答

输入输出是什么?假设您的输入是一系列文档,您需要将其转换为某种嵌入(TF-IDF,任何其他)。之后是 RNN——在我看来还可以。RNN 的输出等于时间步数(每个文档中的单词数?)。对于每个时间步,我们使用密集的最终层进行预测。你有 9 个输出。它是跨 9 种不同类型的类别或引用计数级别的某种分类吗?

除了您提供原始数据而不是使用嵌入层这一事实之外,上述假设总体上看起来还不错