代码部分

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)

SoftMax实际应用

练习,softmax 模型:

Note: 你的 softmax(x) 函数应该返回一个形状和x相同的NumPy array类型。

例如,当输入为一个列表或者一维矩阵(用列向量表示一个样本样本)时,比如说以下的:

scores = [1.0, 2.0, 3.0]

应该返回一个同样长度(即3个元素)的一维矩阵:

print softmax(scores)
[ 0.09003057 0.24472847 0.66524096]

对于一个二维矩阵,如以下(列向量表示单个样本),例如:

scores = np.array([[1, 2, 3, 6],
[2, 4, 5, 6],
[3, 8, 7, 6]])

该函数应该返回一个同样大小(3,4)的二维矩阵,如以下:

[[ 0.09003057  0.00242826  0.01587624  0.33333333]
[ 0.24472847 0.01794253 0.11731043 0.33333333]
[ 0.66524096 0.97962921 0.86681333 0.33333333]]

每个样本(列向量)中的概率加起来应当等于 1。你可以用以上的例子来测试你的函数。

ANSWER:

"""Softmax."""

scores = [3.0, 1.0, 0.2]

import numpy as np

def softmax(x):
"""Compute softmax values for each sets of scores in x."""
return np.exp(x)/np.sum(np.exp(x),axis=0) print(softmax(scores)) # Plot softmax curves
import matplotlib.pyplot as plt
x = np.arange(-2.0, 6.0, 0.1)
scores = np.vstack([x, np.ones_like(x), 0.2 * np.ones_like(x)])
plt.plot(x, softmax(scores).T, linewidth=2)
plt.show()

比较好玩的是plt.plot(x, softmax(scores).T)中,后面的转置了,多线画图时,后面的都是要转置的,因为plt必须要求x和y第一维度大小相等:

plt.plot(np.linspace(0,1,100),np.asarray([10*np.linspace(0,2,100),10*np.linspace(0,1,100)]).T,linewidth=2)
# 可以绘图
# 查看一下shape:
np.linspace(0,1,100).shape
# Out[26]:
# (100,)
np.asarray([10*np.linspace(0,2,100),10*np.linspace(0,1,100)]).shape
# Out[25]:
# (2, 100)
# 必须对应x,y的第一维度大小

SoftMax特点

SoftMax(y*10)后分类器会更自信,SoftMax(y/10)后分类器会失去自信(结果概率平均化)

概念部分

损失函数=代价函数=目标函数

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

『cs231n』线性分类器损失函数的更多相关文章

  1. 『cs231n』计算机视觉基础

    线性分类器损失函数明细: 『cs231n』线性分类器损失函数 最优化Optimiz部分代码: 1.随机搜索 bestloss = float('inf') # 无穷大 for num in range ...

  2. 『cs231n』通过代码理解风格迁移

    『cs231n』卷积神经网络的可视化应用 文件目录 vgg16.py import os import numpy as np import tensorflow as tf from downloa ...

  3. cs331n 线性分类器损失函数与最优化

    tip:老师语速超快...痛苦= = 线性分类器损失函数与最优化 \(Multiclass SVM loss: L_{i} = \sum_{j \neq y_{i}} max(0,s_{i}-s_{y ...

  4. 『cs231n』视频数据处理

    视频信息 和我之前的臆想不同,视频数据不仅仅是一帧一帧的图片本身,还包含个帧之间的联系,也就是还有一个时序的信息维度,包含人的动作判断之类的任务都是要依赖动作的时序信息的 视频数据处理的两种基本方法 ...

  5. 『cs231n』绪论

    笔记链接 cs231n系列所有图片笔记均拷贝自网络,链接如上,特此声明,后篇不再重复. 计算机视觉历史 总结出视觉两个重要结论:1.基础的视觉神经识别的是简单的边缘&轮廓2.视觉是分层的 数据 ...

  6. 『cs231n』通过代码理解gan网络&tensorflow共享变量机制_上

    GAN网络架构分析 上图即为GAN的逻辑架构,其中的noise vector就是特征向量z,real images就是输入变量x,标签的标准比较简单(二分类么),real的就是tf.ones,fake ...

  7. 『cs231n』无监督学习

    经典无监督学习 聚类 K均值 PCA主成分分析 等 深度学习下的无监督学习 自编码器 传统的基于特征学习的自编码器 变种的生成式自编码器 Gen网络(对抗式生成网络) 传统自编码器 原理 类似于一个自 ...

  8. 『cs231n』RNN之理解LSTM网络

    概述 LSTM是RNN的增强版,1.RNN能完成的工作LSTM也都能胜任且有更好的效果:2.LSTM解决了RNN梯度消失或爆炸的问题,进而可以具有比RNN更为长时的记忆能力.LSTM网络比较复杂,而恰 ...

  9. 『cs231n』循环神经网络RNN

    循环神经网络 循环神经网络介绍摘抄自莫凡博士的教程 序列数据 我们想象现在有一组序列数据 data 0,1,2,3. 在当预测 result0 的时候,我们基于的是 data0, 同样在预测其他数据的 ...

随机推荐

  1. Linux基础命令---fold

    fold 按照指定的宽度显示文件. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法       fold [选项]  fil ...

  2. 阿里云运维部署工具AppDeploy详细教程

    AppDeploy是一个通过SSH实现的命令行工具,可完成应用部署和远程运维管理.当前工具实现为两个版本:普通版(伪代码描述语言)和Python版.Python版使用Python语法规则,可实现您的各 ...

  3. 将图片文件转化为字节数组字符串,并对其进行Base64编码处理,以及对字节数组字符串进行Base64解码并生成图片

    实际开发中涉及图片上传并且量比较大的时候一般处理方式有三种 1.直接保存到项目中 最老土直接方法,也是最不适用的方法,量大对后期部署很不方便 2.直接保存到指定路径的服务器上.需要时候在获取,这种方式 ...

  4. 什么是IO多路复用?Nginx的处理机制

    先来说一下什么是IO复用? IO复用解决的就是并发行的问题,比如多个用户并发访问一个WEB网站,对于服务端后台而言就会产生多个请求,处理多个请求对于中间件就会产生多个IO流对于系统的读写.那么对于IO ...

  5. Django 编写自定义的 404 / 500 报错界面

    Django 编写自定义的 404 / 500 报错界面 1. 首先 setting.py 文件中的 debug 参数设置成 false ,不启用调试. DEBUG = False 2. 在 temp ...

  6. msf辅助模块的应用——20145301

    msf辅助模块的应用 实验步骤 创建msf所需的数据库 service postgresql start msfdb start 开启msf,输入命令 use auxiliary/scanner/di ...

  7. Android项目开发三

    微博客户端开发 本周学习计划 运用OAuth相关知识,解决上周出现的微博验证问题. 看懂微博客户端登录.用户主页等功能代码. 将程序中存在的问题解决. 实际完成情况 本周继续研究了OAuth相关知识, ...

  8. JavaScript 开闭原则OCP

    代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  9. 牌型种数|2015年蓝桥杯B组题解析第七题-fishers

    牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得 ...

  10. How can I list all foreign keys referencing a given table in SQL Server?

    How can I list all foreign keys referencing a given table in SQL Server?  how to check if columns in ...