当我使用bilstm模型处理NLP问题时。我在使用session.run()时遇到错误。我在Google上搜索看起来糟糕的输入dict会出错。我打印输入x形状,它是(100,),但我将其定义为:[100,无,256]。 我怎么能解决这个错误? 这是我的偶然: 蟒蛇:3.6 tensorflow:1.0.0 任务:everty描述有一些标签,比如stackoverflow,一个问题有一些标签。我需要建立一个模型来预测问题的标签。我的训练输入x是:[batch_size,None,word_embedding_size]一批问题描述,一个描述有一些单词,一个单词表示为向量,长度为256.输入y为:[batch_size,n_classes],
这是我的型号代码:
self.X_inputs = tf.placeholder(tf.float32, [self.n_steps,None,self.n_inputs])
self.targets = tf.placeholder(tf.float32, [None,self.n_classes])
#transpose the input x
x = tf.transpose(self.X_inputs, [1, 0, 2])
x = tf.reshape(x, [-1, self.n_inputs])
x = tf.split(x, self.n_steps)
# lstm cell
lstm_cell_fw = tf.contrib.rnn.BasicLSTMCell(self.hidden_dim)
lstm_cell_bw = tf.contrib.rnn.BasicLSTMCell(self.hidden_dim)
# dropout
if is_training:
lstm_cell_fw = tf.contrib.rnn.DropoutWrapper(lstm_cell_fw, output_keep_prob=(1 - self.dropout_rate))
lstm_cell_bw = tf.contrib.rnn.DropoutWrapper(lstm_cell_bw, output_keep_prob=(1 - self.dropout_rate))
lstm_cell_fw = tf.contrib.rnn.MultiRNNCell([lstm_cell_fw] * self.num_layers)
lstm_cell_bw = tf.contrib.rnn.MultiRNNCell([lstm_cell_bw] * self.num_layers)
# forward and backward
self.outputs, _, _ = tf.contrib.rnn.static_bidirectional_rnn(
lstm_cell_fw,
lstm_cell_bw,
x,
dtype=tf.float32
)
feed_dict就是这样:
feed_dict={
self.X_inputs: X_train_batch,
self.targets: y_train_batch
}
X_train_batch是一个句子,它们有这样的形状,[100,None,256],'None'的意思是,输入句子长度不一样,从10到1500,我只得到实际长度。也许它会发生错误? 我的问题是:你是否将句子长度填充为相同,或者在进行这样的nlp工作时重塑输入?