mindspore.nn.TimeDistributed

class mindspore.nn.TimeDistributed(layer, time_axis, reshape_with_axis=None)[源代码]

时间序列封装层。

TimeDistributed是一个封装层,它允许将一个网络层应用到输入的每个时间切片。 x 至少是三维。执行中有两种情况。当提供 reshape_with_axis 时,选择reshape方法会更高效;否则,将使用沿 time_axis 划分输入的方法,这种方法更通用。比如,在处理BN时无法提供 reshape_with_axis

参数:

  • layer (Union[Cell, Primitive]) - 需被封装的Cell或Primitive。

  • time_axis (int) - 指定各个时间切片上的轴。

  • reshape_with_axis (int) - 将使用 time_axis 调整该轴。默认值:None。

输入:

  • x (Tensor) - shape为 \((N, T, *)\) 的Tensor。其中 \(*\) 表示任意数量的附加维度。

输出:

shape为 \((N, T, *)\) 的Tensor。

异常:

  • TypeError - layer不是Cell或Primitive类型。

支持平台:

Ascend GPU CPU

样例:

>>> x = Tensor(np.random.random([32, 10, 3]), mindspore.float32)
>>> dense = nn.Dense(3, 6)
>>> net = nn.TimeDistributed(dense, time_axis=1, reshape_with_axis=0)
>>> output = net(x)
>>> print(output.shape)
(32, 10, 6)