我正在尝试使用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的新手,所以我不确定如何正确地将用于查询网络的单个向量正确转换为合适的格式(以及它的外观)。同样,可能是因为我对网络本身的布局的想法不正确。因此,任何帮助将不胜感激!