- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章pytorch实现mnist分类的示例讲解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
torchvision包 包含了目前流行的数据集,模型结构和常用的图片转换工具.
torchvision.datasets中包含了以下数据集 。
MNIST COCO(用于图像标注和目标检测)(Captioning and Detection) LSUN Classification ImageFolder Imagenet-12 CIFAR10 and CIFAR100 STL10 。
torchvision.models 。
torchvision.models模块的 子模块中包含以下模型结构。 AlexNet VGG ResNet SqueezeNet DenseNet You can construct a model with random weights by calling its constructor
pytorch torchvision transform 。
对PIL.Image进行变换 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
from
__future__
import
print_function
import
argparse
#Python 命令行解析工具
import
torch
import
torch.nn as nn
import
torch.nn.functional as F
import
torch.optim as optim
from
torchvision
import
datasets, transforms
class
Net(nn.Module):
def
__init__(
self
):
super
(Net,
self
).__init__()
self
.conv1
=
nn.Conv2d(
1
,
10
, kernel_size
=
5
)
self
.conv2
=
nn.Conv2d(
10
,
20
, kernel_size
=
5
)
self
.conv2_drop
=
nn.Dropout2d()
self
.fc1
=
nn.Linear(
320
,
50
)
self
.fc2
=
nn.Linear(
50
,
10
)
def
forward(
self
, x):
x
=
F.relu(F.max_pool2d(
self
.conv1(x),
2
))
x
=
F.relu(F.max_pool2d(
self
.conv2_drop(
self
.conv2(x)),
2
))
x
=
x.view(
-
1
,
320
)
x
=
F.relu(
self
.fc1(x))
x
=
F.dropout(x, training
=
self
.training)
x
=
self
.fc2(x)
return
F.log_softmax(x, dim
=
1
)
def
train(args, model, device, train_loader, optimizer, epoch):
model.train()
for
batch_idx, (data, target)
in
enumerate
(train_loader):
data, target
=
data.to(device), target.to(device)
optimizer.zero_grad()
output
=
model(data)
loss
=
F.nll_loss(output, target)
loss.backward()
optimizer.step()
if
batch_idx
%
args.log_interval
=
=
0
:
print
(
'Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'
.
format
(
epoch, batch_idx
*
len
(data),
len
(train_loader.dataset),
100.
*
batch_idx
/
len
(train_loader), loss.item()))
def
test(args, model, device, test_loader):
model.
eval
()
test_loss
=
0
correct
=
0
with torch.no_grad():
for
data, target
in
test_loader:
data, target
=
data.to(device), target.to(device)
output
=
model(data)
test_loss
+
=
F.nll_loss(output, target, size_average
=
False
).item()
# sum up batch loss
pred
=
output.
max
(
1
, keepdim
=
True
)[
1
]
# get the index of the max log-probability
correct
+
=
pred.eq(target.view_as(pred)).
sum
().item()
test_loss
/
=
len
(test_loader.dataset)
print
(
'\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'
.
format
(
test_loss, correct,
len
(test_loader.dataset),
100.
*
correct
/
len
(test_loader.dataset)))
def
main():
# Training settings
parser
=
argparse.ArgumentParser(description
=
'PyTorch MNIST Example'
)
parser.add_argument(
'--batch-size'
,
type
=
int
, default
=
64
, metavar
=
'N'
,
help
=
'input batch size for training (default: 64)'
)
parser.add_argument(
'--test-batch-size'
,
type
=
int
, default
=
1000
, metavar
=
'N'
,
help
=
'input batch size for testing (default: 1000)'
)
parser.add_argument(
'--epochs'
,
type
=
int
, default
=
10
, metavar
=
'N'
,
help
=
'number of epochs to train (default: 10)'
)
parser.add_argument(
'--lr'
,
type
=
float
, default
=
0.01
, metavar
=
'LR'
,
help
=
'learning rate (default: 0.01)'
)
parser.add_argument(
'--momentum'
,
type
=
float
, default
=
0.5
, metavar
=
'M'
,
help
=
'SGD momentum (default: 0.5)'
)
parser.add_argument(
'--no-cuda'
, action
=
'store_true'
, default
=
False
,
help
=
'disables CUDA training'
)
parser.add_argument(
'--seed'
,
type
=
int
, default
=
1
, metavar
=
'S'
,
help
=
'random seed (default: 1)'
)
parser.add_argument(
'--log-interval'
,
type
=
int
, default
=
10
, metavar
=
'N'
,
help
=
'how many batches to wait before logging training status'
)
args
=
parser.parse_args()
use_cuda
=
not
args.no_cuda
and
torch.cuda.is_available()
torch.manual_seed(args.seed)
device
=
torch.device(
"cuda"
if
use_cuda
else
"cpu"
)
kwargs
=
{
'num_workers'
:
1
,
'pin_memory'
:
True
}
if
use_cuda
else
{}
train_loader
=
torch.utils.data.DataLoader(
datasets.MNIST(
'../data'
, train
=
True
, download
=
True
,
transform
=
transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((
0.1307
,), (
0.3081
,))
])),
batch_size
=
args.batch_size, shuffle
=
True
,
*
*
kwargs)
test_loader
=
torch.utils.data.DataLoader(
datasets.MNIST(
'../data'
, train
=
False
, transform
=
transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((
0.1307
,), (
0.3081
,))
])),
batch_size
=
args.test_batch_size, shuffle
=
True
,
*
*
kwargs)
model
=
Net().to(device)
optimizer
=
optim.SGD(model.parameters(), lr
=
args.lr, momentum
=
args.momentum)
for
epoch
in
range
(
1
, args.epochs
+
1
):
train(args, model, device, train_loader, optimizer, epoch)
test(args, model, device, test_loader)
if
__name__
=
=
'__main__'
:
main()
|
以上这篇pytorch实现mnist分类的示例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.
原文链接:https://blog.csdn.net/KyrieHe/article/details/80516737 。
最后此篇关于pytorch实现mnist分类的示例讲解的文章就讲到这里了,如果你想了解更多关于pytorch实现mnist分类的示例讲解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试使用 Pandas 和 scikit-learn 在 Python 中执行分类。我的数据集包含文本变量、数值变量和分类变量的混合。 假设我的数据集如下所示: Project Cost
我想要一种图形化且有吸引力的方式来表示二进制数据的列总和,而不是表格格式。我似乎无法让它发挥作用,尽管有人会认为这将是一次上篮。 数据看起来像这样(我尝试创建一个可重现的示例,但无法让代码填充 0 和
我有一个简单的类别模型: class Category(models.Model): name = models.CharField(max_length=200) slug = mo
我正在开发一个知识系统,当用户进入一道菜时,该系统可以返回酒。我的想法是根据用户的输入为每个葡萄酒类别添加分数,然后显示最适合的葡萄酒类别的前 3 个。例如,如果有人输入鱼,那么知识库中的所有红葡萄酒
我目前正在研究流失问题的预测模型。 每当我尝试运行以下模型时,都会收到此错误:至少一个类级别不是有效的 R 变量名称。这将在生成类概率时导致错误,因为变量名称将转换为 X0、X1。请使用可用作有效 R
如何对栅格重新分类(子集)r1 (与 r2 具有相同的尺寸和范围)基于 r2 中的以下条件在给定的示例中。 条件: 如果网格单元格值为 r2是 >0.5 ,保留>0.5中对应的值以及紧邻0.5个值的相
我想知道在 java 中进行以下分类的最佳方法是什么。例如,我们有一个简单的应用程序,其分类如下: 空气 -----电机类型 -----------平面对象 -----非电机型 -----------
这是一个非常基本的示例。但我正在做一些数据分析,并且不断发现自己编写非常类似的 SQL 计数查询来生成概率表。 我的表被定义为值 0 表示事件未发生,而值 1 表示事件确实发生。 > sqldf(
假设我有一组护照图像。我正在开展一个项目,我必须识别每本护照上的姓名,并最终将该对象转换为文本。 对于标签(或分类(我认为是初学者))的第一部分,每本护照上都有姓名,我该怎么做? 我可以使用哪些技术/
我有这张图片: 我想做的是在花和树之间对这张图片进行分类,这样我就可以找到图片中被树木覆盖的区域,以及被那些花覆盖的区域。 我在想这可能是某种 FFT 问题,但我不确定它是如何工作的。单个花的 FFT
我的数据集有 32 个分类变量和一个数值连续变量(sales_volume) 首先,我使用单热编码 (pd.get_dummies) 将分类变量转换为二进制,现在我有 1294 列,因为每一列都有多个
我正在尝试学习一些神经网络来获得乐趣。我决定尝试从 kaggle 的数据集中对一些神奇宝贝传奇卡进行分类。我阅读了文档并遵循了机器学习掌握指南,同时阅读了媒体以尝试理解该过程。 我的问题/疑问:我尝试
我目前正在进行推文情绪分析,并且有几个关于步骤的正确顺序的问题。请假设数据已经过相应的预处理和准备。所以这就是我将如何进行: 使用 train_test_split(80:20 比例)停止测试数据集。
一些上下文:Working with text classification and big sparse matrices in R 我一直在研究 text2vec 的文本多类分类问题。包装和 ca
数据 我有以下(简化的)数据集,我们称之为 df从现在开始: species rank value 1
我一直在尝试创建一个 RNN。我总共有一个包含 1661 个单独“条目”的数据集,每个条目中有 158 个时间序列坐标。 以下是一个条目的一小部分: 0.00000000e+00 1.9260968
我有一个关于机器学习的分类和回归问题。第一个问题,以下数据集 http://it.tinypic.com/view.php?pic=oh3gj7&s=8#.VIjhRDGG_lF 我们可以说,数据集是
我用1~200个数据作为训练数据,201~220个作为测试数据格式如下:3 个类(类 1、类 2、类 3)和 20 个特征 2 1:100 2:96 3:88 4:94 5:96 6:94 7:72
我有 2 个基于多个数字特征(例如 v1….v20)的输出类别(好和差)。 如果 v1、v2、v3 和 v4 为“高”,则该类别为“差”。如果 v1、v2、v3 和 v4 为“低”,则该类别为“好”
我遇到了使用朴素贝叶斯将文档分类为各种类别问题的问题。 实际上我想知道 P(C) 或我们最初掌握的类别的先验概率会随着时间的推移而不断变化。例如,对于类(class) - [音乐、体育、新闻] 初始概
我是一名优秀的程序员,十分优秀!