此页面由 Cloud Translation API 翻译。
Switch to English

tf.compat.v1.lite.experimental.nn.dynamic_rnn

GitHub上查看源代码

创建由RNNCell指定一个经常性的神经网络cell

执行的完全动态展开inputs

例:

 # create a BasicRNNCell
rnn_cell = tf.compat.v1.nn.rnn_cell.BasicRNNCell(hidden_size)

# 'outputs' is a tensor of shape [batch_size, max_time, cell_state_size]

# defining initial state
initial_state = rnn_cell.zero_state(batch_size, dtype=tf.float32)

# 'state' is a tensor of shape [batch_size, cell_state_size]
outputs, state = tf.compat.v1.nn.dynamic_rnn(rnn_cell, input_data,
                                   initial_state=initial_state,
                                   dtype=tf.float32)
 
 # create 2 LSTMCells
rnn_layers = [tf.compat.v1.nn.rnn_cell.LSTMCell(size) for size in [128, 256]]

# create a RNN cell composed sequentially of a number of RNNCells
multi_rnn_cell = tf.compat.v1.nn.rnn_cell.MultiRNNCell(rnn_layers)

# 'outputs' is a tensor of shape [batch_size, max_time, 256]
# 'state' is a N-tuple where N is the number of LSTMCells containing a
# tf.nn.rnn_cell.LSTMStateTuple for each cell
outputs, state = tf.compat.v1.nn.dynamic_rnn(cell=multi_rnn_cell,
                                   inputs=data,
                                   dtype=tf.float32)
 

cell RNNCell的实例。
inputs 该RNN投入。如果time_major == False (默认值),这必须是一个Tensor形状的: [batch_size, max_time, ...]或这种元件的嵌套元组。如果time_major == True ,这必须是一个Tensor形状的: [max_time, batch_size, ...]或这种元件的嵌套元组。这也可以是满足此性质的张量(可能嵌套)元组。前两个维度必须在所有的输入相匹配,但在其他的行列和其它形状的部件可以不同。在这种情况下,输入到cell在每个时间步骤将复制这些元组的结构,除时间维度(从该时间取)。输入到cell在每个时间步骤将是一个Tensor或尺寸为各张量的(可能是嵌套的)元组[batch_size, ...]
sequence_length (可选)一个Int32 / int64类型矢量大小[batch_size]用来复制通透状态和零出输出过去分批元素的序列长度时。因此,它更多的性能比正确性。
initial_state (可选)为RNN的初始状态。如果cell.state_size是整数,这必须是一个Tensor适当类型和形状的[batch_size, cell.state_size]如果cell.state_size是一个元组,这应该是具有形状张量的元组[batch_size, s] for s in cell.state_size
dtype (可选)的初始状态和预期的输出的数据类型。如果不提供initial_state或RNN状态具有异质D型必需。
parallel_iterations (默认值:32)。迭代次数并行运行。这些操作不具有任何时间依赖性,可以并行运行,将是。此参数权衡时间换空间。值>> 1个使用更多的内存,但需要较少的时间,而较小的值使用更少的内存,但计算需要更长的时间。
swap_memory 透明地交换正向推理产生,但需要回道具从GPU到CPU的张量。这允许通常不适合于单一GPU,具有非常小的(或没有)性能损失训练RNNs。
time_major 的形状格式inputsoutputs张量。如果为真,这些Tensors的形状必须[max_time, batch_size, depth] 。如果为假,这些Tensors必须被成形[batch_size, max_time, depth] 。使用time_major = True有点更有效,因为它避免了在RNN计算的开始和结束转置。然而,大多数数据TensorFlow是分批重大,所以默认此函数接受输入并发射在分批主要形式输出。
scope VariableScope所创建的子图;默认为“RNN”。

一对(输出状态)其中:
outputs 该RNN输出Tensor

如果time_major == False(默认值),这将是一个Tensor形: [batch_size, max_time, cell.output_size]

如果time_major == TRUE,这将是一个Tensor形: [max_time, batch_size, cell.output_size]

请注意,如果cell.output_size是整数或的(可能是嵌套)倍速TensorShape对象,那么outputs将是具有元组相同的结构cell.output_size ,包含具有对应于在所述形状数据的形状张量cell.output_size

state 最终状态。如果cell.state_size是一个int,这将被成形[batch_size, cell.state_size]如果它是一个TensorShape ,这将被成形[batch_size] + cell.state_size 。如果是整数或的(可能是嵌套)倍速TensorShape ,这将是具有相应形状的元组。如果细胞是LSTMCells state将是含有一个元组LSTMStateTuple针对每个小区。

TypeError 如果cell是不是RNNCell的一个实例。
ValueError 如果输入的是没有一个空列表。
RuntimeError 如果不使用控制流V2。