如何将RNN训练用T×B×N形状3D张量转换为B×TN形状的张量
3D张量T×B×N转B×TN实现方案
核心逻辑是先调整维度顺序把批次维度B放到最前面,再将时间步T和特征N两个维度合并展平,注意不能直接展平,否则会打乱批次维度和时间维度的元素顺序。
各常用框架实现示例
- PyTorch
import torch # 假设输入张量input_tensor形状为 T × B × N output_tensor = input_tensor.permute(1, 0, 2).flatten(start_dim=1) # 也可以用reshape实现:output_tensor = input_tensor.permute(1, 0, 2).reshape(input_tensor.shape[1], -1)
- TensorFlow
import tensorflow as tf # 假设输入张量input_tensor形状为 T × B × N transposed = tf.transpose(input_tensor, perm=[1, 0, 2]) output_tensor = tf.reshape(transposed, (tf.shape(input_tensor)[1], -1))
- NumPy
import numpy as np # 假设输入数组input_arr形状为 T × B × N output_arr = input_arr.transpose(1, 0, 2).reshape(input_arr.shape[1], -1)
内容的提问来源于stack exchange,提问作者gullerg
相关产品推荐
相关产品推荐

