wPlot = 255.0 * (tmpW[:, :, :, i].squeeze() - tmpWMin) / (tmpWMax -
                                                                  tmpWMin)
        plt.imshow(wPlot.astype('uint8'))
    plt.savefig(baseDir + 'svm1.png')
    plt.clf()

# Training classifier
startTime = time.time()
classifier.train(xTrain, yTrain, lr=1e-7, reg=5e4, iter=1500, verbose=True)
print('Training time: {0}'.format(time.time() - startTime))

# Calculate accuracy (Should get around this)
# Training acc:   37.61%
# Validating acc: 37.0%
# Testing acc:    37.38%
print('Training acc:   {0}%'.format(classifier.calAccuracy(xTrain, yTrain)))
print('Validating acc: {0}%'.format(classifier.calAccuracy(xVal, yVal)))
print('Testing acc:    {0}%'.format(classifier.calAccuracy(xTest, yTest)))

# Show some weight for each class after training
if classifier.W is not None:
    tmpW = classifier.W[:-1, :]
    tmpW = tmpW.reshape(32, 32, 3, 10)
    tmpWMin, tmpWMax = np.min(tmpW), np.max(tmpW)
    for i in range(numClasses):
        plt.subplot(2, 5, i + 1)
        plt.title(classesName[i])
        # Scale weight to 0 - 255
        wPlot = 255.0 * (tmpW[:, :, :, i].squeeze() - tmpWMin) / (tmpWMax -
                                                                  tmpWMin)
        plt.imshow(wPlot.astype('uint8'))
Esempio n. 2
0
        wPlot = 255.0 * (tmpW[:, :, :, i].squeeze() - tmpWMin) / (tmpWMax -
                                                                  tmpWMin)
        plt.imshow(wPlot.astype('uint8'))
    plt.savefig(baseDir + 'svm1.png')
    plt.clf()

# Training classifier
startTime = time.time()
classifier.train(xTrain, yTrain, lr=1e-7, reg=5e4, iter=1500, verbose=True)
print('Training time: {0}'.format(time.time() - startTime))

# Calculate accuracy (Should get around this)
# Training acc:   37.61%
# Validating acc: 37.0%
# Testing acc:    37.38%
print('Training acc:   {0}%'.format(classifier.calAccuracy(xTrain, yTrain)))
print('Validating acc: {0}%'.format(classifier.calAccuracy(xVal, yVal)))
print('Testing acc:    {0}%'.format(classifier.calAccuracy(xTest, yTest)))

# Show some weight for each class after training
if classifier.W is not None:
    tmpW = classifier.W[:-1, :]
    tmpW = tmpW.reshape(32, 32, 3, 10)
    tmpWMin, tmpWMax = np.min(tmpW), np.max(tmpW)
    for i in range(numClasses):
        plt.subplot(2, 5, i + 1)
        plt.title(classesName[i])
        # Scale weight to 0 - 255
        wPlot = 255.0 * (tmpW[:, :, :, i].squeeze() - tmpWMin) / (tmpWMax -
                                                                  tmpWMin)
        plt.imshow(wPlot.astype('uint8'))