Pytorch error记录

  1. 代码:
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
batch_size = 32
train_dataloader = torch.utils.data.DataLoader(
    datasets.MNIST("./mnist_data", train=True, download=True,
                           transform=transforms.Compose([
                               transforms.ToTensor(),
                               transforms.Normalize((0.1307,), (0.3081,))
                           ])),
    batch_size=batch_size, shuffle=True, num_workers=0, pin_memory=True
)
test_dataloader = torch.utils.data.DataLoader(
    datasets.MNIST("./mnist_data", train=False, download=True,
                           transform=transforms.Compose([
                               transforms.ToTensor(),
                               transforms.Normalize((0.1307,), (0.3081))
                           ])),
    batch_size=batch_size, shuffle=True, num_workers=1, pin_memory=True
)

lr = 0.01
momentum = 0.5
model = Net().to(device)
optimizer = torch.optim.SGD(model.parameters(), lr=lr, momentum=momentum)

num_epochs = 2
for epoch in range(num_epochs):
    train(model, device, train_dataloader, optimizer, epoch)
    test(model, device, test_dataloader)
    
torch.save(model.state_dict(), "mnist_cnn.pt")

错误提示
IndexError: too many indices for tensor of dimension 0.
解决办法
test_dataloader中0.3081后缺逗号

transforms.Normalize((0.1307,), (0.3081,))
                           ])),
### 回答1: 在 PyTorch 中,`setLevel` 是 `logging` 模块中的一个方法,用于设置日志记录器的级别。日志记录器是用于记录程序运行时产生的信息的工具,它可以根据不同的级别记录不同的信息,如 DEBUG、INFO、WARNING、ERROR 等。 使用 `setLevel` 方法可以设置记录器的级别,只有当记录器的级别达到或超过指定级别时,才会记录信息。例如,当记录器的级别设置为 `INFO` 时,只会记录 `INFO`、`WARNING`、`ERROR` 级别及以上的信息,而不会记录 `DEBUG` 级别的信息。 示例代码: ``` import logging logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) ``` 上面的代码中,首先创建了一个记录器 `logger`,然后将其级别设置为 `INFO`。这样,当该记录记录信息时,只会记录 `INFO`、`WARNING`、`ERROR` 级别及以上的信息。 ### 回答2: 在PyTorch中,`setLevel()`是`torch.set_num_threads()`函数的别名。它用于设置PyTorch中用于并行处理的线程数。 在机器学习中,特别是深度学习领域,模型的训练和推理通常是高度计算密集型的任务。为了加快计算速度和提高效率,PyTorch使用多线程来并行处理计算任务。而`setLevel()`函数的作用就是设置PyTorch框架中并行处理的线程数。 通过调用`setLevel()`函数,我们可以将线程数设置为指定的数值。较高的线程数可能会加快计算速度,但也会增加内存和CPU的压力。因此,在设置线程数时需要在计算性能和资源占用之间做出权衡。 例如,我们可以使用以下代码将PyTorch的线程数设置为4: ```python import torch torch.set_num_threads(4) ``` 请注意,`setLevel()`函数在PyTorch 1.2.0及更高版本中引入,旧版本中应使用`torch.set_num_threads()`函数来设置线程数。 总之,通过设置PyTorch中的线程数,我们可以优化模型的计算速度和性能,但需要注意合理地平衡计算需求和资源占用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值