使用LSTM

时间:2018-10-21 10:35:45

标签: python tensorflow lstm

我是python的新手。当我尝试运行以下程序时,出现以下错误。

  

ValueError:变量模型/嵌入/ seq2seq / seq2seq_encode / rnn / multi_rnn_cell / cell_0 / lstm_cell /内核不存在,或者不是使用tf.get_variable()创建的。您是不是要在VarScope中设置“ reuse = None”?

如何解决该错误? 下面是创建lstm模型的代码:

def create_model(encode_seqs, decode_seqs, src_vocab_size,emb_dim,is_train=True, reuse=False):

    with tf.variable_scope("model", reuse=reuse):
        with tf.variable_scope("embedding") as vs:

              tl.layers.set_name_reuse(True)
              net_encode = EmbeddingInputlayer(
                inputs = encode_seqs,
                vocabulary_size = src_vocab_size,
                embedding_size = emb_dim,
                name = 'seq_embedding')

              vs.reuse_variables()


              net_decode = EmbeddingInputlayer(
                inputs = decode_seqs,
                vocabulary_size = src_vocab_size,
                embedding_size = emb_dim,
                name = 'seq_embedding')

              net_rnn = Seq2Seq(net_encode, net_decode,
                cell_fn = tf.nn.rnn_cell.LSTMCell,
                n_hidden = emb_dim,
                initializer = tf.random_uniform_initializer(-0.1, 0.1),
                encode_sequence_length = retrieve_seq_length_op2(encode_seqs),
                decode_sequence_length = retrieve_seq_length_op2(decode_seqs),
                initial_state_encode = None,
                dropout = (0.5 if is_train else None),
                n_layer = 3,
                return_seq_2d = True,
                name = 'seq2seq')

         net_out = DenseLayer(net_rnn, n_units=src_vocab_size, act=tf.identity, name='output')

    return net_out, net_rnn

我看过类似的问题,但是似乎没有一个解决方案可以解决我的问题。

0 个答案:

没有答案