【问题标题】:Creating and shaping data for 1D CNN为 1D CNN 创建和塑造数据
【发布时间】:2020-08-30 03:02:35
【问题描述】:

我有一个 (244, 108) numpy 数组。它包含一天内每分钟交易收盘价的百分比变化,即 108 个值,类似 244 天。基本上它是一个一维向量。那么为了做 1D CNN,我应该如何塑造我的数据呢?

我做了什么:

x.shape = (244, 108)
x = np.expand_dims(x, axis=2)
x.shape = (243, 108, 1)
y.shape = (243,)

型号:

class Net(torch.nn.Module):   
    def __init__(self):
        super(Net, self).__init__()

        self.layer1 = torch.nn.Conv1d(in_channels=108, out_channels=1, kernel_size=1, stride=1)
        self.act1 = torch.nn.ReLU()
        self.act2 = torch.nn.MaxPool1d(kernel_size=1, stride=1)
        self.layer2 = torch.nn.Conv1d(in_channels=1, out_channels=1, kernel_size=1, stride=1)
        self.act3 = torch.nn.ReLU()
        self.act4 = torch.nn.MaxPool1d(kernel_size=1, stride=1)


        self.linear_layers = nn.Linear(1, 1)


    # Defining the forward pass    
    def forward(self, x):
        x = self.layer1(x)
        x = self.act1(x)
        x = self.act2(x)
        x = self.layer2(x)
        x = self.act3(x)
        x = self.act4(x)
        x = self.linear_layers(x)
        return x


【问题讨论】:

    标签: machine-learning pytorch conv-neural-network


    【解决方案1】:

    如果每一天都应该是单独的卷积实例,那么您的数据应该具有(248, 1, 108) 的形状。这似乎更合理。

    如果您希望所有的日子和分钟都成为网络学习的连续统一体,那么它应该是(1, 1, 248*108)

    基本上第一个维度是batch(多少个训练样本),第二个是样本的通道数或特征数(在您的情况下只有一个),最后一个是时间步数。

    编辑

    你的池化层应该是torch.nn.AdaptiveMaxPool1d(1)。您还应该像这样从该层输出reshapepooled.reshape(x.shape[0], -1),然后再将其推入torch.nn.Linear 层。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 2020-04-22
      • 2020-11-01
      • 1970-01-01
      • 2013-05-06
      相关资源
      最近更新 更多