我正在关注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的情况下如何做到这一点?