如何在TensorFlow的许多非递归层中实现一个递归层?

时间:2019-04-18 13:11:52

标签: tensorflow machine-learning keras deep-learning recurrent-neural-network

我正在关注TensorFlow教程“ Text generation using a RNN with eager execution”。它使用Keras构建三层网络,其中只有一层是循环的

if tf.test.is_gpu_available():
    rnn = tf.keras.layers.CuDNNGRU
else:
    import functools
    rnn = functools.partial(
        tf.keras.layers.GRU, recurrent_activation='sigmoid')

tf.keras.Sequential([
    tf.keras.layers.Embedding(vocab_size, embedding_dim, 
                              batch_input_shape=[batch_size, None]),

    # the only recurrent layer
    rnn(rnn_units,
        return_sequences=True, 
        recurrent_initializer='glorot_uniform',
        stateful=True),

    tf.keras.layers.Dense(vocab_size)
])

我想知道如何使用较低级别的TensorFlow进行同样的操作。我发现的大多数示例都遵循以下原则:

cells = tf.nn.rnn_cell.MultiRNNCell([ ... ])
outputs, state = tf.nn.dynamic_rnn(cells, ...)

他们总是向MultiRNNCell提供 RNN单元列表,并让dynamic_rnn()展开整个过程。 如果我只希望像上面的教程那样只重复一层,怎么办?在不使用Keras的情况下如何做到这一点?

0 个答案:

没有答案