私はこのリポジトリのコードを使用しています - gtsrb。私は正常に95%以上の精度でモデルを訓練しました。しかし、すでに訓練されたモデルに対して単一の画像をテストする方法はわかりません。私はegg_net_best.h5
という名前のsaved_models
ディレクトリに保存された訓練されたモデルを持っています。トーチ - 保存されたモデルを読み込み、分類するために単一の画像をテストする
は、ここで私がこれまで行っているものです:
input = image.load(path_to_single_image, 3)
model = torch.load('saved_models/vgg_net_best.h5')
output = model:forward(input)
これは私に出力を提供しますが、私はフォーマットを理解していません。
- 訓練されたモデルの右に対する単一の画像をテストするためのアプローチです:それは、この
-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テンソルは私に与えますか?
- 9x11テンソルが1x11でなければならないのはなぜですか?
誰かが正しい方向を指すことができますか?
PS:この質問SO- training single imageは、私が探しているものではありません。
編集1:
私は次のようでしたが、結果は全く同じです提案を1として。
のLUA 5.1著作権(C)1994から2008 Lua.org、PUC-リオ
パス= '/Users/pamio/Workspace/practices/torch/test_model/test/00010/IMG_2522.JPG'
入力= image.load(経路3)
モデル= torch.load( 'saved_models/vgg_net_best.h5')
モデル:(評価)
出力=モデル:10
にEXP()=出力
列1
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..0285 0.0059 0.0062 0.0048 0.0455 0.7893 0.0269 0.0013 0.0177 0.0615
[torch.DoubleTensor of size 9x11]
EDIT2:フォワード(入力)
> 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
}
}
真が、ケースをないthatsの。ところで、訓練されたモデルに対して単一の画像をテストする私のアプローチは正しいですか? –
私はまた、この質問を嫌にしましたが、まだ何の応答も受けていません。 –
@PamioSolankyはい、アプローチが正しいように見えます。おそらく、 'dropout()'や 'batchNormalization()'のようなレイヤーのために、 ':forward()'の前に 'model:evaluate()'を追加して、訓練と評価中に違う振る舞いをするべきでしょう。また、私が答えて述べたように、リポジトリのモデルの最後に 'LogSoftMax()'層があるので、取得するために出力に ':exp()'を追加する必要があります。配列の最適な予測:sort()を実行します。あなたが私をあなたの解決に役立たせたい場合には、 'print model'の出力を貼り付けてください!それが役に立てば幸い! –