首页 > 代码库 > 『cs231n』限制性分类器损失函数和最优化

『cs231n』限制性分类器损失函数和最优化

代码部分

SVM损失函数 & SoftMax损失函数:

技术分享技术分享

注意一下softmax损失的用法:

 技术分享

SVM损失函数:

import numpy as np

def L_i(x, y, W):
    ‘‘‘
    非向量化SVM损失计算
    :param x: 输入矢量
    :param y: 标准分类
    :param W: 参数矩阵
    :return: 
    ‘‘‘
    delta = 1.0
    scores = W.dot(x)
    correct_score = scores[y]
    D = W.shap[0]
    loss_i = 0.0
    for j in range(D):
        if j==y:
            continue
        loss_i += max(0.0, scores[j] - correct_score + delta)
    return loss_i

def L_i_vectorized(x, y, W):
    ‘‘‘
    半向量化SVM损失计算
    :param x: 输入矢量
    :param y: 标准分类
    :param W: 参数矩阵
    :return: 
    ‘‘‘
    delta = 1.0
    scores = W.dot(x)
    margins = np.maximum(0, scores - scores[y] + delta)
    margins[y] = 0
    loss_i = np.sum(margins)
    return loss_i

 softmax分类器:

技术分享

import numpy as np

# 正常的softmax分类器
f = np.array([123, 456, 789])
# p = np.exp(f) / np.sum(np.exp(f))
# print(p)

# 数值稳定化的softmax分类器
f -= np.max(f)
p = np.exp(f) / np.sum(np.exp(f))
print(p)

 

概念部分

技术分享损失函数=代价函数=目标函数

 技术分享

 

技术分享

技术分享

技术分享

 

技术分享

技术分享

 

技术分享

 svm给出一个得分,softmax给出一个概率。

『cs231n』限制性分类器损失函数和最优化