tf_agents.networks.Sequential

The Sequential Network represents a sequence of Keras layers.

Inherits From: Network

Used in the notebooks

Used in the tutorials

It is a TF-Agents network that should be used instead of tf.keras.layers.Sequential. In contrast to keras Sequential, this layer can be used as a pure Layer in tf.functions and when exporting SavedModels, without having to pre-declare input and output shapes. In turn, this layer is usable as a preprocessing layer for TF Agents Networks, and can be exported via PolicySaver.

Stateful Keras layers (e.g. LSTMCell, RNN, LSTM, TF-Agents DynamicUnroll) are all supported. The state_spec of Sequential is a tuple whose length matches the number of stateful layers passed. If no stateful layers or networks are passed to Sequential then state_spec == (). Given that the replay buffers do not support specs with lists due to tf.nest vs tf.data.nest conflicts Sequential will also guarantee that all specs do not contain lists.

Usage:

c = Sequential([layer1, layer2, layer3])
output, next_state = c(inputs, state)

layers A list or tuple of layers to compose. Any layers that are subclasses of tf.keras.layers.{RNN,LSTM,GRU,...} are wrapped in tf_agents.keras_layers.RNNWrapper.
input_spec (Optional.) A nest of tf.TypeSpec representing the input observations to the first layer.
name (Optional.) Network name.

ValueError If layers is empty.
ValueError If layers[0] is a generic Keras layer (not a TF-Agents network) and input_spec is None.
TypeError If any of the layers are not instances of keras Layer.

input_tensor_spec Returns the spec of the input to the network of type InputSpec.
layers Get the list of all (nested) sub-layers used in this Network.
state_spec

Methods

copy

View source

Make a copy of a Sequential instance.

Args
**kwargs Args to override when recreating this network. Commonly overridden args include 'name'.

Returns
A deep copy of this network.

Raises
RuntimeError If not tf.executing_eagerly(); as this is required to be able to create deep copies of layers in layers.

create_variables

View source

Force creation of the network's variables.

Return output specs.

Args
input_tensor_spec (Optional). Override or provide an input tensor spec when creating variables.
**kwargs Other arguments to network.call(), e.g. training=True.

Returns
Output specs - a nested spec calculated from the outputs (excluding any batch dimensions). If any of the output elements is a tfp Distribution, the associated spec entry returned is a DistributionSpec.

Raises
ValueError If no input_tensor_spec is provided, and the network did not provide one during construction.

get_initial_state

View source

Returns an initial state usable by the network.

Args
batch_size Tensor or constant: size of the batch dimension. Can be None in which case not dimensions gets added.

Returns
A nested object of type self.state_spec containing properly initialized Tensors.

get_layer

View source

Retrieves a layer based on either its name (unique) or index.

If name and index are both provided, index will take precedence. Indices are based on order of horizontal graph traversal (bottom-up).

Args
name String, name of layer.
index Integer, index of layer.

Returns
A layer instance.

Raises
ValueError In case of invalid layer name or index.

summary

View source

Prints a string summary of the network.

Args
line_length Total length of printed lines (e.g. set this to adapt the display to different terminal window sizes).
positions Relative or absolute positions of log elements in each line. If not provided, defaults to [.33, .55, .67, 1.].
print_fn Print function to use. Defaults to print. It will be called on each line of the summary. You can set it to a custom function in order to capture the string summary.

Raises
ValueError if summary() is called before the model is built.