TensorFlow函数教程:tf.keras.backend.rnn
2019-03-22 18:24 更新
tf.keras.backend.rnn函数
tf.keras.backend.rnn(
step_function,
inputs,
initial_states,
go_backwards=False,
mask=None,
constants=None,
unroll=False,
input_length=None,
time_major=False,
zero_output_for_mask=False
)
定义在:tensorflow/python/keras/backend.py。
在张量的时间维度迭代。
参数:
- step_function:RNN步骤函数。参数:input:具有shape (samples, ...)的张量(没有时间维度),表示在特定时间步骤的一批样品的输入。states:张量列表。返回:output:具有shape (samples, output_dim)的张量 (没有时间维度)。new_states:张量列表,长度和shape与“states”相同。列表中的第一个状态必须是前一个时间步的输出张量。
- inputs:shape为(samples, time, ...) (至少3D)的时间数据的张量,或嵌套张量,并且每个都具有shape (samples, time, ...)。
- initial_states:shape为(samples, state_size) 的张量(无时间维度),包含step函数中使用的状态的初始值。在state_size是嵌套形状的情况下,initial_states的形状也将遵循嵌套结构。
- go_backwards:布尔值。如果为True,则以相反的顺序对时间维度进行迭代,并返回相反的序列。
- mask:shape为(samples, time, 1)的二进制张量,对于每个被屏蔽的元素都为零。
- constants:每个步骤传递的常量值列表。
- unroll:是否展开RNN或使用符号while_loop。
- input_length:如果指定,则假设时间维度为此长度。
- time_major:布尔值。如果为true,则输入和输出将位于shape (timesteps, batch, ...),而在False情况下,它将是 (batch, timesteps, ...)。使用time_major = True更有效,因为它避免了RNN计算开始和结束时的转置。但是,大多数TensorFlow数据都是批处理主数据,因此默认情况下,此函数接受批处理主要形式的输入并发出输出。
- zero_output_for_mask:布尔值。如果为True,则屏蔽时间步长的输出将为零,而在False情况下,将返回先前时间步长的输出。
返回:
一个元组,(last_output, outputs, new_states)。
last_output:shape为(samples, ...) 输出的rnn的最新输出。
outputs:shape为(samples, time, ...)的张量,其中每个条目 outputs[s, t] 是样本 s 在时间 t 的步骤函数输出值。
new_states:张量列表,步长函数返回的最新状态,shape为(samples, ...)。
可能引发的异常:
- ValueError:如果输入维度小于3。
- ValueError:如果unroll是True,但输入时间步长不是固定数字。
- ValueError:如果提供了mask(非None),但未提供状态(len(states)== 0)。