2017-05-18 62 views
0

我想建立情绪分析模型中TensorflowBasicRNNCell对象不是可迭代

def rnn_lstm(weights, biases, data_x, sequence_length, vocab_size, embedding_size): 
    # Use Tensor Flow embedding lookup and convert the input data set 
    with tf.device("/cpu:0"): 
     embedding = tf.get_variable("embedding43", [vocab_size, embedding_size]) 
     embedded_data = tf.nn.embedding_lookup(embedding, data_x) 
     embedded_data_dropout = tf.nn.dropout(embedded_data, rnn_dropout_keep_prob) 

    #add LSTM cell and dropout nodes 
    rnn_lstm_cell = tf.contrib.rnn.core_rnn_cell.BasicLSTMCell(rnn_cell_size, forget_bias = rnn_lstm_forget_bias) 
    rnn_lstm_cell = tf.contrib.rnn.core_rnn_cell.DropoutWrapper(rnn_lstm_cell, output_keep_prob = rnn_dropout_keep_prob) 



    rnn_data_X = embedded_data_dropout 
    # Permuting batch_size and sequence_length 
    rnn_data_X = tf.transpose(rnn_data_X, [1, 0, 2]) 
    #print ("RNN After transpose rnn_data_X: ", rnn_data_X) 
    # Reshaping to (sequence_length * batch_size, rnn_data_vec_size) 
    rnn_data_X = tf.reshape(rnn_data_X, [-1, rnn_data_vec_size]) 
    #print ("RNN After reshape rnn_data_X: ", rnn_data_X) 
    # Split to get a list of 'sequence_length' tensors of shape (batch_size, rnn_data_vec_size) 
    rnn_data_X = tf.split(rnn_data_X,sequence_length,0) 
    #print ("RNN After split len(rnn_data_X): ", len(rnn_data_X), rnn_data_X[0]) 

    # Get lstm cell output 
    outputs, states = tf.contrib.rnn.core_rnn_cell.BasicRNNCell(rnn_lstm_cell, rnn_data_X) 


    output = tf.matmul(outputs[-1], weights) + biases 
    return output 

但扔给我一个错误,这是BasicRNNCell对象不是可迭代。任何想法请

回答

0

的问题是该行:

# Get lstm cell output 
outputs, states = tf.contrib.rnn.core_rnn_cell.BasicRNNCell(rnn_lstm_cell, rnn_data_X) 

那不是如何你应该使用复发的细胞。 rnn_lstm_cell已经是一种(类型)复发性细胞;使用它,你需要调用tf.nn.dynamic_rnn

# Get lstm cell output 
outputs, states = tf.nn.dynamic_rnn(rnn_lstm_cell, rnn_data_X) 

您可以了解更多关于复发模型TensorFlow here

+0

谢谢你的回答,但是现在当我改变为动态ValueError后,我得到了这个错误:对于'transpose_6'(op:'Transpose'),尺寸必须为2,但输入形状为[?,128], [3]。 – angel