pytorch中的大数据,帮助调整步骤

big data in pytorch, help for tuning steps

我之前拆分过我的大数据:

# X_train.shape : 4M samples x 2K features
# X_test.shape : 2M samples x 2K features

我已经准备好数据加载器

target = torch.tensor(y_train.to_numpy())
features = torch.tensor(X_train.values)
train = data_utils.TensorDataset(features, target)
train_loader = data_utils.DataLoader(train, batch_size=10000, shuffle=True) 

testtarget = torch.tensor(y_test.to_numpy())
testfeatures = torch.tensor(X_test.values)
test = data_utils.TensorDataset(testfeatures, testtarget)
validation_generator = data_utils.DataLoader(test, batch_size=20000, shuffle=True) 

我从在线课程中复制了这个网络示例(不知道其他模型是否更好)

base_elastic_model = ElasticNet()
param_grid = {'alpha':[0.1,1,5,10,50,100],
              'l1_ratio':[.1, .5, .7, .9, .95, .99, 1]}
grid_model = GridSearchCV(estimator=base_elastic_model,
                          param_grid=param_grid,
                          scoring='neg_mean_squared_error',
                          cv=5,
                          verbose=0)

我做了这个配件

for epoch in range(1):
    # Training
    cont=0
    total = 0
    correct = 0
    for local_batch, local_labels in train_loader:
        cont+=1
        with torch.set_grad_enabled(True):
            grid_model.fit(local_batch,local_labels)
        with torch.set_grad_enabled(False):
            predicted = grid_model.predict(local_batch)
            total += len(local_labels)
            correct += ((1*(predicted>.5)) == np.array(local_labels)).sum()
        #print stats

    # Validation
    total = 0
    correct = 0

    with torch.set_grad_enabled(False):
        for local_batch, local_labels in validation_generator:
            predicted = grid_model.predict(local_batch)
            total += len(local_labels)
            correct += ((1*(predicted>.5)) == np.array(local_labels)).sum()
            #print stats

也许我的孙子们会得到 1 个 epoch 的结果!

我需要一些建议:

  1. how/where(在代码中)我可以使用更少的数据进行第一次调整吗?
  2. 一些关于在 2022 年取得成果的步骤的建议?
  3. 因为我已经为统计打印添加了“with torch.set_grad_enabled(False):”,我是否要添加(如上)“with torch.set_grad_enabled(True):”?
  4. 我有一个 GPU(没有图像有用吗??)。我有函数“get_device()”。我要把“.to(get_device())”放在哪里才能使用 CUDA?
  5. 我正在学习整理信息,您对我的练习有什么一般建议吗?
  1. 通过简单地在一定数量后停止训练循环来缩短训练过程。

    for local_batch, local_labels in train_loader:
    
       cont+=1
       if cont== number_u_want_to_stop:
          break #Breaks out of the for Loop and continues with the rest.
    
  2. 始终使用您的 GPU 进行训练和“推理”,也就是(使用模型进行预测)bs 它甚至比最好的 CPU.[=15= 快 20 倍以上]

  3. 不,你不必再次让它成为现实。这是使用“with”语法的要点,因此在 with 块中的代码完成后,属性将消失在空气中:)。所以你可以删除这一行 with a torch.set_grad_enabled(False):

  4. 正如我在第 2 点中所说,将 GPU 用于所有项目,但请记住,即使是小模型,您也必须使用至少 4GB 的显卡。

    这里是在 windows 上使用 GPU 的安装命令:

    pip3 install torch==1.10.1+cu113 torchvision==0.11.2+cu113 torchaudio===0.10.1+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

    这里是 Linux

    pip3 install torch==1.10.1+cu113 torchvision==0.11.2+cu113 torchaudio==0.10.1+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

这是 PyTorch 文档的 link ,它向您解释了如何在 PyTorch 中使用 GPU

  1. 一个非常好的入门项目,可能每个人在开始机器学习时都做过,尤其是那些想使用计算机视觉的人。使用 MNIST 数据集实现图像分类。那里有很多很棒的教程。所以一开始,所有这些新词会让人不知所措,但我保证当你开始使用与编写这些教程的人相同的语言时,它会变得更好。因此,首先按照教程进行操作,如果您不理解任何单词,只需单独 google 并分小块学习,否则,将很难理解。在获得一些基本知识后,您可以开始构建自己的小项目。从小事做起。所以继续磨:)