-1

MNIST データセットのテスト時にすべての入力に対して関数を呼び出したいと考えています。たとえば、MNIST のテスト データが x1, ... , xn の場合、テスト時にすべての入力 xi に対して関数を呼び出します。「 http://nbviewer.ipython.org/github/BVLC/caffe/blob/tutorial/examples/01-learning-lenet.ipynb 」のコードを修正して、「 #solver.step(1) という行にコメントを付けました。 # SGD by Caffe" というのは、ネットワークのトレーニングが必要ないためです。しかし、元のコードと比較して精度が低下するため、これは正しい方法ではないと思います。それを実装する方法について助けてください。

一度考えたコードは変えることができます。

%%time
niter = 200
test_interval = 25
# losses will also be stored in the log
train_loss = zeros(niter)
test_acc = zeros(int(np.ceil(niter / test_interval)))
output = zeros((niter, 8, 10))
# the main solver loop
for it in range(niter):
    solver.step(1)  # SGD by Caffe

# store the train loss
#train_loss[it] = solver.net.blobs['loss'].data

# store the output on the first test batch
# (start the forward pass at conv1 to avoid loading new data)
#solver.test_nets[0].forward(start='conv1')
output[it] = solver.test_nets[0].blobs['ip2'].data[:8]

# run a full test every so often
# (Caffe can also do this for us and write to a log, but we show here
#  how to do it directly in Python, where more complicated things are easier.)
if it % test_interval == 0:
    print 'Iteration', it, 'testing...'
    correct = 0
    for test_it in range(100):
        solver.test_nets[0].forward()
        correct += sum(solver.test_nets[0].blobs['ip2'].data.argmax(1)
                       == solver.test_nets[0].blobs['label'].data)
    test_acc[it // test_interval] = correct / 1e4
4

1 に答える 1