CaffeとCIFAR-10を用いて学習を行い、未知の画像の判別を行いたいと思っています。
SlideShare(https://www.slideshare.net/yasuyukisugai/deep-learningcaffe)に載っている以下のpythonのコードを参考にしているのですが
python
1import sys 2import caffe 3from caffe.proto import caffe_pb2 4import numpy 5 6cifar_map = { 7 0: "airplane", 8 1: "automobile", 9 2: "bird", 10 3: "cat", 11 4: "deer", 12 5: "dog", 13 6: "frog", 14 7: "horse", 15 8: "ship", 16 9: "truck" 17} 18 19mean_blob = caffe_pb2.BlobProto() 20with open('Caffe/examples/cifar10/mean.binaryproto') as f: 21 mean_blob.ParseFromString(f.read()) 22 23mean_array = numpy.asarray(mean_blob.data, dtype=numpy.float32).reshape( 24 (mean_blob.channels, mean_blob.height, mean_blob.width) 25) 26 27classifier = caffe.Classifier( 28 'Caffe/examples/cifar10/cifar10_quick.prototxt', 29 'Caffe/examples/cifar10/cifar10_quick_iter_4000.caffemodel', 30 mean=mean_array, 31 raw_scale=255) 32 33 34image = caffe.io.load_image(sys.argv[1]) 35predictions = classifier.predict([image], oversample=False) 36answer = numpy.argmax(predictions) 37print(predictions) 38print(str(answer) + ":" + cifar_map[answer])
最後の部分で出力されるのは一番可能性が高いであろうラベルの名前のみです。
その上の部分で確率の一覧が出力されるのですが、これを大きい順にラベルの番号もしくは名前と一緒に出力するようにするためにはどのようなコードにすればよいのでしょうか?
一番目に高い確率の数字 ラベルの番号もしくは名前
二番目に高い確率の数字 ラベルの番号もしくは名前
・
・
・
最も低い確率の数字 ラベルの番号もしくは名前
上記のような形にしたいです。
argmaxでは配列の中で数字(確率)が一番大きいものの添え字が返されていると認識しています。
pythonはほとんど触ったことがありません。ご教授お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/05 03:41