Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何利用pyTorch实现LSTM神经网络的bagging方法?_Python_Tensorflow_Pytorch - Fatal编程技术网

Python 如何利用pyTorch实现LSTM神经网络的bagging方法?

Python 如何利用pyTorch实现LSTM神经网络的bagging方法?,python,tensorflow,pytorch,Python,Tensorflow,Pytorch,与标题一样,我的问题是如何使用PyTorch库为LSTM应用打包方法?我已经在python上使用TensorFlow构建了一个。但是现在使用C和C++来暗示系统,需要使用PyTrac?< /P> 有没有建议不需要使用Pytork,直接将基于tensorflow建立的模型应用于系统中的实际预测 请帮忙 如果要在PyTorch中创建集成,可以分别训练多个模型,然后定义一个类将它们一起使用: class MyEnsemble(nn.Module): def __init__(self, fir

与标题一样,我的问题是如何使用PyTorch库为LSTM应用打包方法?我已经在python上使用TensorFlow构建了一个。但是现在使用C和C++来暗示系统,需要使用PyTrac?< /P> 有没有建议不需要使用Pytork,直接将基于tensorflow建立的模型应用于系统中的实际预测


请帮忙

如果要在PyTorch中创建集成,可以分别训练多个模型,然后定义一个类将它们一起使用:

class MyEnsemble(nn.Module):
    def __init__(self, firstModel, secondModel):
        super(MyEnsemble, self).__init__()
        self.firstModel = modelA
        self.secondModel = modelB
        self.classifier = nn.Linear(in_features, n_classes) #define accordingly
        self.relu = nn.ReLU()

    def forward(self, x1, x2):
        x1 = self.firstModel(x1)
        x2 = self.secondModel(x2)
        x = torch.cat((x1, x2), dim=1)
        x = self.classifier(self.relu(x))
        return x

如果要使用TensorFlow模型,有多种方法。可以将它导出到C++

。在PyTorch创建集成时,最好使用PyTrk中的<代码> NN.MultEclipse()/Cux>类。
nn.ModuleList()
具有与普通Python列表相同的功能,如
append()
。创建这样的集合模型时,可以直接调用
向后
操作,梯度下降将通过模型发生

下面是一个集成神经网络(
EnsembleNet
),它使用
NeuralNet
作为集成的单个NN实例

NeuralNet(nn.Module):
  def __init__(self):
    super(NeuralNet, self).__init__()
    self.fc1 = nn.Linear(in_dim, out_dim)
    self.fc2 = nn.Linear(out_dim, 1)


  def forward(self, X):
    """ X must be of shape [-1, in_dim]"""
    X = self.fc1(X)
    return torch.sigmoid(self.fc2(X))


EnsembleNet(nn.Module):
  def __init__(self, net = NeuralNet, num_ensemble=5, seed_val=SEED):
      super(EnsembleNet, self).__init__()
      self.ensembles = nn.ModuleList()

      for i in range(num_ensemble):
          torch.manual_seed(seed_val*i+1)
          if torch.cuda.is_available(): # To randomize init of NNs for Ensembles
              torch.cuda.manual_seed(seed_val*i+1)
          self.ensembles.append(net)

      self.final = nn.Linear(num_ensemble, 1)

  def forward(self, X_in_list):
      pred = torch.cat([net(X_in_list[i]) for i,net in enumerate(self.ensembles)])
      pred = pred.reshape(-1, len(self.ensembles))
      return torch.sigmoid(self.final(pred))
要使用bagging,只需创建一个X_input_列表,其中列表的不同元素是从训练数据中用替换进行采样的张量。(您的X_输入_列表和num_集合的大小必须相同)


可以修改<代码>集成程序< /Cord>初始化代码,以获取不同神经网络的列表。

谢谢答案,但是它似乎在导出到C++之后降低了模型的准确性: