pytorch CNN的预测被限制到一定的值

thtygnil  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(118)

我已经用DNA序列和它的表达值运行了CNN模型。然而,模型的预测范围是在一定的基因表达值,如图1所示。我的问题是,1)如果我设置不同的超参数(当前学习率= 1 e-5,epoch = 500),预测的结果会改善吗?2)使用更深层的训练是明智的吗?如果是这样,有什么经验法则吗?3)训练数据不平衡(图2),是否建议在训练前对数据进行归一化?
以下是我从medium引用的CNN模型:

class DNA_CNN(nn.Module):
    def __init__(self,
                 seq_len,
                 num_filters=32,
                 kernel_size=3):
        super().__init__()
        self.seq_len = seq_len
        
        self.conv_net = nn.Sequential(
            # 4 is for the 4 nucleotides
            nn.Conv1d(4, num_filters, kernel_size=kernel_size),
            nn.ReLU(inplace=True),
            nn.Flatten(),
            nn.Linear(num_filters*(seq_len-kernel_size+1), 1),
        ) 

    def forward(self, xb):
        # reshape view to batch_size x 4channel x seq_len
        # permute to put channel in correct order
        xb = xb.permute(0,2,1) 
        
        #print(xb.shape)
        out = self.conv_net(xb)
        return out
    
    # __FOOTNOTE 1__

字符串
图一
x1c 0d1x的数据
图2.国际货币基金组织


  • 基因表达值以tpm测量
qoefvg9y

qoefvg9y1#

首先,如果log值在[-10,10]之间正态分布,如图所示,则应考虑在模型中传递log(X) / 5.0而不是X,以在一个小区间内以规则间隔的值汇总信息。它将极大地帮助您的模型处理数据。ML模型无法在不调用log的情况下同时处理1000和0.0001这样的值。
在第二次,如果你的模型继续总是预测相同的值,最好通过添加一个或两个层来增加复杂性。您还应该增加内核大小,并且可以考虑1-D池,特别是如果您有大型序列,以便增加模型末尾每个元素所查看的元素范围,并获得更好的序列表示。

相关问题