pytorch item sum方法使用

本文详细介绍了在深度学习中torch.sum函数的三种用法,包括对整个张量、按列和按行求和,并解释了它们在模型训练和概率分布计算中的应用。同时,讨论了item方法的作用,它是将单个张量值转换为标量,便于数值操作。在10分类任务中,理解这些概念对于正确理解和实现模型至关重要。
摘要由CSDN通过智能技术生成

item是将tensor类型数据转换为标量

sum有三种形式 torch.sum(a), torch.sum(a, axis = 0), torch.sum(a, axis = 1)

  • torch.sum(a):

计算a所有元素求和

  • torch.sum(a, axis=0):

a是二维矩阵,固定住列,扫描每行求和, 结果就是每一列元素相加

  • torch.sum(a, axis = 1)

a是二维矩阵,固定住行,按列求和,结果就是每一行元素相加

深度学习里面用得最多就是第一种和第三种, 行一般表示样本个数,列一般表示模型预测输出的概率分布, 对于一个10分类任务,输出维度为10,对应有10列,如果将10个分类从0~9进行编码, python对列索引标号从0开始,那么第一列索引为0代表第0这个分类,第10列索引为9,代表第9这个类别。

item这个方法主要是将单个tensor类型数值转换为标量,方便求和。

这两个方法可以具体使用可以看下下面代码
在这里插入图片描述

以下是使用PyTorch进行模型训练的一般步骤: 1. 准备数据集:首先,你需要准备好你的训练数据集和测试数据集。这些数据集应该是PyTorch的数据加载器(DataLoader)对象,以便于在训练过程中进行批量处理。 2. 定义模型:接下来,你需要定义你的模型架构。这可以通过创建一个继承自`torch.nn.Module`的类来实现。在这个类中,你需要定义模型的结构和前向传播函数。 3. 定义损失函数:在模型训练过程中,你需要定义一个损失函数来衡量模型的预测结果与真实标签之间的差异。PyTorch提供了许多常见的损失函数,如交叉熵损失函数(`torch.nn.CrossEntropyLoss`)和均方误差损失函数(`torch.nn.MSELoss`)等。 4. 定义优化器:为了更新模型的参数,你需要选择一个优化器。常见的优化器包括随机梯度下降(SGD)(`torch.optim.SGD`)、Adam(`torch.optim.Adam`)等。你可以根据你的需求选择适合的优化器。 5. 训练模型:在训练过程中,你需要迭代地将数据输入模型,计算损失并进行反向传播,然后使用优化器来更新模型的参数。这个过程可以通过编写一个训练循环来实现。 下面是一个使用PyTorch进行模型训练的示例代码: ```python import torch import torch.nn as nn import torch.optim as optim # 准备数据集 train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=64, shuffle=True) test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=64, shuffle=False) # 定义模型 class MyModel(nn.Module): def __init__(self): super(MyModel, self).__init__() self.fc = nn.Linear(784, 10) def forward(self, x): x = x.view(x.size(0), -1) x = self.fc(x) return x model = MyModel() # 定义损失函数和优化器 criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=0.01) # 训练模型 for epoch in range(num_epochs): for images, labels in train_loader: optimizer.zero_grad() outputs = model(images) loss = criterion(outputs, labels) loss.backward() optimizer.step() # 在测试集上评估模型 correct = 0 total = 0 with torch.no_grad(): for images, labels in test_loader: outputs = model(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() accuracy = correct / total print('Accuracy: {:.2f}%'.format(100 * accuracy)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值