首页 > 解决方案 > 如何在pytorch中将400个样本和5000个数据点的信号数据集转换为[400,1,5000]的张量?

问题描述

我有 400 个传感器记录,每个记录的长度为 5000。我想将其转换为 [400,1,5000] 或 [batch_size, input_channels, signal_length] 的张量,用于 ML 问题,以使用 pytorch 训练 1DCNN 网络nn.Conv1d。

标签: pytorch

解决方案


此操作通常称为解压缩维度。有多种方法可以实现这一点,或者使用显式重塑,或者使用切片技巧。

  1. 使用torch.Torch.unsqueeze, 要么不合适:

    >>> x.unsqueeze(dim=1) # won't affect x
    

    或就地使用torch.Tensor.unsqueeze_

    >>> x.unsqueeze_(dim=1) # will mutate x
    
  2. 使用索引:

    >>> x[:, None] # will insert a singleton at dim=1
    
  3. 用 重塑张量torch.Tensor.reshape

    >>> x.reshape(len(x), 1, -1)
    

    这不是推荐的方法,因为它不能一概而论。在我看来,你不应该使用reshape或者view如果你实际上并没有重塑张量。


推荐阅读