我正在尝试使用tflearn解决RNN的以下问题:

存在与下一个单词相关联的单词列表;比方说,有50个独特的单词和三个单词用于预测下一个单词 . 我将单词列表编码为二进制向量(长度为50),其中预测单词的三个单词设置为1,其余全部设置为0.预测单词表示为长度为50的二进制向量 . 预测单词的条目设置为1,其他所有条目的条目设置为0 .

我按如下方式创建网络:

input_dim = 50
num_timesteps = 100
net = tflearn.input_data([None, num_timesteps, input_dim])
net = tflearn.simple_rnn(net, 10, return_seq=False)
net = tflearn.fully_connected(net, input_dim, 'softmax')
net = tflearn.regression(net)
self.model = tflearn.DNN(net)

我准备(即重塑)数据如下:

x_data = numpy.reshape(x_data, [-1, num_timesteps, input_dim) # List of lists of words that predict a words
y_data = numpy.reshape(y_data, [-1, input_dim]) # List of lists of predicted words

培训网络有效但我遇到了查询网络的困难 . 更确切地说,我想输入一个向量并想要检索网络的猜测,但是得到以下错误:“无法为Tensor'InputData / X:0'提供形状值(50,),它具有形状'(?,100,50)'“ . 接下来,我尝试使用重塑矢量

self.model.predict(numpy.reshape(x, [-1, num_timesteps, input_dim)]))

这让我“无法将50号阵列重塑成形状(100,50)”(这对我来说听起来很合理) .

我是Tensorflow和tflearn的新手,因此我不确定如何正确地将单个向量转换为用于查询网络的合适格式(以及它应该是什么样子) . 此外,我可能对网络布局本身的想法不正确 . 因此,任何帮助将不胜感激!