【发布时间】:2017-08-06 08:20:58
【问题描述】:
我正在使用来自此存储库的代码 - gtsrb。我已经成功地以超过 95% 的准确率训练了模型。但是,我不确定如何针对已经训练好的模型测试单个图像。我有一个训练模型保存在saved_models 目录下,名称为egg_net_best.h5。
这是我到目前为止所做的:
input = image.load(path_to_single_image, 3)
model = torch.load('saved_models/vgg_net_best.h5')
output = model:forward(input)
这给了我一个输出,但我不明白格式。它给了我一个 9x11 张量,看起来像这样
-3.1302 -2.7557 -3.6514 -5.1083 -0.4339 -3.6722 -6.7406 -4.1163 -3.2751 -3.0417 -2.4740
-4.6895 -4.5554 -1.1019 -4.1954 -1.0187 -3.2853 -4.7917 -5.1205 -2.6658 -2.3842 -2.8388
-3.2914 -2.7516 -2.1224 -4.6314 -0.7596 -3.0647 -5.5749 -3.9037 -3.4147 -2.9719 -1.9181
-3.7006 -3.0220 -2.3870 -5.2183 -0.5729 -3.1286 -6.1271 -4.4617 -3.6552 -3.1698 -1.9662
-2.4560 -2.7865 -2.0729 -2.7589 -2.4757 -2.6934 -1.3172 -2.5542 -3.0839 -3.2817 -2.4930
-3.5149 -3.2504 -2.4154 -4.9333 -0.6504 -3.3700 -5.3838 -4.4408 -2.5233 -2.3310 -2.4659
-3.5452 -4.1833 -3.3995 -2.3409 -2.9932 -2.7852 -0.5702 -3.0504 -2.8158 -3.8218 -3.9147
-3.1225 -2.7842 -2.9371 -4.6879 -0.6197 -3.1266 -5.6755 -4.0995 -3.7424 -3.1942 -1.8000
-2.9004 -2.4582 -2.5652 -4.6114 -0.6186 -3.3890 -4.1276 -3.7448 -3.1053 -3.0396 -2.6929
问题:
- 针对经过训练的模型测试单个图像的方法是否正确?
- 为什么我看到的是 9x11 张量,而它应该是 1x11?
有人能指出正确的方向吗?
PS:这个问题SO- training single image不是我要找的。p>
编辑 1:
根据建议我做了以下但结果是一样的。
Lua 5.1 版权所有 (C) 1994-2008 Lua.org, PUC-Rio
path = '/Users/pamio/Workspace/practices/torch/test_model/test/00010/IMG_2522.JPG'
input = image.load(path, 3)
model = torch.load('saved_models/vgg_net_best.h5')
模型:评估()
输出 = 模型:前向(输入):exp()
=输出
第 1 到 10 列
0.0257 0.0621 0.0027 0.0169 0.0132 0.0530 0.6320 0.0798 0.0022 0.0138 0.0985
0.1033 0.0838 0.0705 0.0609 0.1639 0.0678 0.1156 0.0971 0.0653 0.1042 0.0676
0.0101 0.0262 0.0010 0.0053 0.0014 0.0312 0.8307 0.0349 0.0002 0.0050 0.0541
0.0666 0.1656 0.0054 0.0337 0.0112 0.0537 0.3638 0.1694 0.0062 0.0134 0.1111
0.0589 0.0663 0.0298 0.0148 0.1565 0.0976 0.2328 0.1159 0.0324 0.0978 0.0972
0.0511 0.0786 0.0153 0.0549 0.0341 0.1121 0.3010 0.1052 0.0314 0.0994 0.1169
0.0619 0.0777 0.0395 0.0521 0.0358 0.1125 0.3184 0.0785 0.0150 0.0588 0.1498
0.0153 0.0319 0.0009 0.0080 0.0015 0.0386 0.7779 0.0449 0.0003 0.0079 0.0726
0.0123 0.0285 0.0059 0.0062 0.0048 0.0455 0.7893 0.0269 0.0013 0.0177 0.0615
[torch.DoubleTensor of size 9x11]
编辑2:
> print(model)
nn.Sequential {
[input -> (1) -> (2) -> output]
(1): nn.Sequential {
[input -> (1) -> (2) -> (3) -> (4) -> (5) -> (6) -> (7) -> (8) -> (9) -> (10) -> (11) -> (12) -> (13) -> (14) -> (15) -> (16) -> (17) -> (18) -> (19) -> (20) -> (21) -> output]
(1): nn.SpatialConvolution(3 -> 32, 3x3, 1,1, 1,1)
(2): nn.SpatialBatchNormalization (4D) (32)
(3): nn.ReLU
(4): nn.SpatialConvolution(32 -> 32, 3x3, 1,1, 1,1)
(5): nn.SpatialBatchNormalization (4D) (32)
(6): nn.ReLU
(7): nn.SpatialMaxPooling(2x2, 2,2)
(8): nn.SpatialConvolution(32 -> 64, 3x3, 1,1, 1,1)
(9): nn.SpatialBatchNormalization (4D) (64)
(10): nn.ReLU
(11): nn.SpatialConvolution(64 -> 64, 3x3, 1,1, 1,1)
(12): nn.SpatialBatchNormalization (4D) (64)
(13): nn.ReLU
(14): nn.SpatialMaxPooling(2x2, 2,2)
(15): nn.SpatialConvolution(64 -> 128, 3x3, 1,1, 1,1)
(16): nn.SpatialBatchNormalization (4D) (128)
(17): nn.ReLU
(18): nn.SpatialConvolution(128 -> 128, 3x3, 1,1, 1,1)
(19): nn.SpatialBatchNormalization (4D) (128)
(20): nn.ReLU
(21): nn.SpatialMaxPooling(2x2, 2,2)
}
(2): nn.Sequential {
[input -> (1) -> (2) -> (3) -> (4) -> (5) -> (6) -> (7) -> output]
(1): nn.View(4608)
(2): nn.Linear(4608 -> 512)
(3): nn.ReLU
(4): nn.BatchNormalization (2D) (512)
(5): nn.Dropout(0.500000)
(6): nn.Linear(512 -> 11)
(7): nn.LogSoftMax
}
}
【问题讨论】: