【pytorch】分类

# 分类
n_data=torch.ones(100,2)
# print(n_data)
x0=torch.normal(2*n_data,1) #class 0
y0=torch.zeros(100)
x1=torch.normal(-2*n_data,1)    #class 1
y1=torch.ones(100)
x=torch.cat((x0,x1)).type(torch.float32)
y=torch.cat((y0,y1)).type(torch.long)
x,y=Variable(x),Variable(y)

plt.scatter(x.data.numpy()[:,0],x.data.numpy()[:,1],c=y.data.numpy(),cmap='RdYlGn')
# plt.show()

# plt.scatter(n_data.numpy())
# plt.show()

class Net(torch.nn.Module):
    def __init__(self,n_feature,n_hidden,n_output):
        super(Net,self).__init__()
        self.hidden=torch.nn.Linear(n_feature,n_hidden)
        self.out=torch.nn.Linear(n_hidden,n_output)

    def forward(self,x):
        x=torch.relu(self.hidden(x))
        x=F.softmax(self.out(x))
        return x

net=Net(2,10,2)
# print(net)
# print(list(net.parameters()))
plt.ion()
optimizer=torch.optim.SGD(net.parameters(),lr=0.02)
loss_func=torch.nn.CrossEntropyLoss()


for t in range(100):
    out=net(x)
    loss=loss_func(out,y)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    if t % 2 == 0:
        plt.cla()
        prediction=torch.argmax(out,1)#每行最大值
        pred_y=prediction.data.numpy()
        target_y=y.data.numpy()
        plt.scatter(x.data.numpy()[:, 0], x.data.numpy()[:, 1], c=pred_y, cmap='RdYlGn')
        acc=np.mean(pred_y == target_y)
        plt.text(1.4,-4,"Accuracy=%.2f"%acc,fontdict={'size':20,'color':'red'})
        plt.pause(0.2)

plt.ioff()
plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyTorch是一个开源的深度学习框架,可以用于构建、训练和部署神经网络模型。要进行分类任务,首先需要准备训练数据和标签。然后,可以使用PyTorch提供的各种预定义的模型或自定义模型来构建分类模型。接下来,通过定义损失函数和选择合适的优化器来训练模型。训练过程中,将输入数据传递给模型并计算预测输出,然后计算损失并通过反向传播更新模型参数。最后,可以使用训练好的模型进行分类预测。 以下是一个简单的示例代码,展示了如何利用PyTorch进行图像分类任务: ```python import torch import torch.nn as nn import torch.optim as optim import torchvision.datasets as datasets import torchvision.transforms as transforms # 准备数据集 train_dataset = datasets.MNIST( root='path/to/dataset', train=True, transform=transforms.ToTensor(), download=True ) test_dataset = datasets.MNIST( root='path/to/dataset', train=False, transform=transforms.ToTensor(), download=True ) # 定义模型 model = nn.Sequential( nn.Flatten(), nn.Linear(784, 256), nn.ReLU(), nn.Linear(256, 10) ) # 定义损失函数和优化器 criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001) # 训练模型 num_epochs = 10 batch_size = 32 train_dataloader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True) for epoch in range(num_epochs): for batch, (data, targets) in enumerate(train_dataloader): optimizer.zero_grad() outputs = model(data) loss = criterion(outputs, targets) loss.backward() optimizer.step() # 测试模型 test_dataloader = torch.utils.data.DataLoader(test_dataset, batch_size=batch_size, shuffle=False) with torch.no_grad(): correct = 0 total = 0 for data, targets in test_dataloader: outputs = model(data) _, predicted = torch.max(outputs.data, dim=1) total += targets.size(0) correct += (predicted == targets).sum().item() accuracy = correct / total print(f'Test Accuracy: {accuracy}') ``` 这只是一个简单的例子,实际应用中可能需要根据具体任务进行调整和改进。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值