【Pytorch深度学习实战】(3)逻辑回归(Logistic Regression)

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】

 🖍foreword

✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。

如果你对这个系列感兴趣的话,可以关注订阅哟👋

逻辑回归Pytorch实现 


 
 
  1. import torch
  2. import torch.nn as nn
  3. import torchvision
  4. import torchvision.transforms as transforms
  5. # 超参数
  6. input_ size = 28 * 28 # 784
  7. num_classes = 10
  8. num_epochs = 5
  9. batch_ size = 100
  10. learning_rate = 0.001
  11. # MNIST 数据集(图像和标签)
  12. train_dataset = torchvision.datasets.MNIST(root = '../../data',
  13. train = True,
  14. transform =transforms.ToTensor(),
  15. download = True)
  16. test_dataset = torchvision.datasets.MNIST(root = '../../data',
  17. train = False,
  18. transform =transforms.ToTensor())
  19. # 数据加载器(输入管道)
  20. train_loader = torch.utils. data.DataLoader(dataset =train_dataset,
  21. batch_ size =batch_ size,
  22. shuffle = True)
  23. test_loader = torch.utils. data.DataLoader(dataset = test_dataset,
  24. batch_ size =batch_ size,
  25. shuffle = False)
  26. # 逻辑回归模型
  27. model = nn.Linear( input_ size, num_classes)
  28. # 损失和优化器
  29. # nn.CrossEntropyLoss() computes softmax internally
  30. criterion = nn.CrossEntropyLoss()
  31. optimizer = torch.optim.SGD(model.parameters(), lr =learning_rate)
  32. # 训练模型
  33. total_step = len(train_loader)
  34. for epoch in range(num_epochs):
  35. for i, (images, labels) in enumerate(train_loader):
  36. # 将images重塑为 (batch_ size, input_ size)
  37. images = images.reshape(- 1, input_ size)
  38. # 前向传播
  39. outputs = model(images)
  40. loss = criterion(outputs, labels)
  41. # 向后优化
  42. optimizer. zero_grad()
  43. loss.backward()
  44. optimizer.step()
  45. if (i + 1) % 100 = = 0:
  46. print ( 'Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}'
  47. . format(epoch + 1, num_epochs, i + 1, total_step, loss.item()))
  48. # 测试模型
  49. # 在测试阶段,我们不需要计算梯度(为了内存效率)
  50. with torch. no_grad():
  51. correct = 0
  52. total = 0
  53. for images, labels in test_loader:
  54. images = images.reshape(- 1, input_ size)
  55. outputs = model(images)
  56. _, predicted = torch.max(outputs. data, 1)
  57. total + = labels. size( 0)
  58. correct + = (predicted = = labels). sum()
  59. print( 'Accuracy of the model on the 10000 test images: {} %'. format( 100 * correct / total))
  60. # 保存模型
  61. torch.save(model.state_dict(), 'model.ckpt')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值