cs231n作业——softmax

cs231n

  • cs231n作业——softmax
    • 1.基础知识
    • 2.使用循环进行求loss和求导
    • 3.向量化进行求导和loss

1.基础知识

Inputs:

- W: A numpy array of shape (D, C) containing weights.

- X: A numpy array of shape (N, D) containing a minibatch of data.

- y: A numpy array of shape (N,) containing training labels; y[i] = c means

that X[i] has label c, where 0 <= c < C.

- reg: (float) regularization strength

Returns a tuple of:

- loss as single float

- gradient with respect to weights W; an array of same shape as W

“”"

输入的w是d个属性和c个类别,x是n给样本和d个属性,输出loss和梯度

softmax公式如上所示,可以把所有的输出y值,进行变成概率,且都是正概率,相加的概率和为1

2.使用循环进行求loss和求导

求loss,我们一般使用交叉熵进行验证损失,交叉熵


计算两个概率之间的距离。因为yi为标签值,只有为真实标签时yi才wei1,其他为0.,所以这个就可以简化为-lnai。

求导是链式求导法则,-lnai求导就是 -1/ai。

z4 = w41o1+w42o2+w43*o3

下面应该是ez4

接下来就是对z4进行求导

z4在上下都有,那么我们使用导数进行求导,上下求导。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZBmT36SP-1631159742076)(https://z3.ax1x.com/2021/09/09/hqKRZ6.png)]

可以发现就是aj(1-aj)

如果是对z5进行求导,那么就是-aj*ai。剩下的链式求导就是x自己。

整体代码如下。

num_train = X.shape[0]
num_class = W.shape[1]for i in range(num_train):scores = X[i, :].dot(W) # (1, C)p = np.exp(scores) / np.sum(np.exp(scores))loss += -np.log(p[y[i]])for j in range(num_class):if j == y[i]:dW[:, j] += (p[j] - 1) * X[i, :].T else:dW[:, j] += p[j] * X[i, :].Tloss /= num_traindW /= num_trainloss += reg * np.sum(np.square(W))dW += 2 * reg * W

3.向量化进行求导和loss

由于是链式求导,我们第一步就是求出所有的得分在c个类别里。

 num_train = X.shape[0]scores = X.dot(W) # (N, C)

生成n*c的矩阵

第二部就是进行softmax,进行输出概率。

 p = np.exp(scores) / np.sum(np.exp(scores), axis=1, keepdims=True)

进行求和是消灭列,并且保持二维矩阵的特性,使他可以通过广播机制,生成n*c的矩阵

第三步就是进行求loss,我们只需要使用choose函数,挑选出样本标签纸的概率进行-ln求和就行

correct_p = p[np.arange(num_train), y]loss -= np.sum(np.log(correct_p))

接下来就是求导。

导数,我们根据loss进行求导,由上面的链式求导,我们知道-lnai求导是-1/ai

ai对标签纸求导就是ai*(1-ai),非标签值求导就是-aj *ai ,最后是乘以x。t

链式复合就是标签纸是(ai-1)*x,非标签就是aj本身。

p[np.arange(num_train), y] -= 1dW += X.T.dot(p)

最后就是正则项相关的代码了

loss /= num_traindW /= num_trainloss += reg * np.sum(np.square(W))dW += 2 * reg * W

cs231n作业——softmax相关推荐

  1. cs231n作业环境配置

    cs231n作业的环境配置 查了很多资料,尝试了很多次,终于成功了 参考文章:http://www.manongjc.com/article/30189.html 首先我的电脑是win10(x86), ...

  2. 斯坦福CS231n作业代码(汉化)Assignment 3 Q5

    生成对抗网络 (GANs) 编写:张礼俊/SlyneD 校对:毛丽 总校对与审核:寒小阳 CS231N到目前位置,所有对神经网络的应用都是判别式模型,给定一个输入,训练产生一个label输出.从直接对 ...

  3. 【cs231n作业笔记】一:KNN分类器

    安装anaconda,下载assignment作业代码 作业代码数据集等2018版基于python3.6 下载提取码4put 本课程内容参考: cs231n官方笔记地址 贺完结!CS231n官方笔记授 ...

  4. 手把手教你写CS231N作业一 KNN分类器 详细解析 作业源文件 数据集

    一些准备工作 python环境 官方课程给出的源文件在这里 根据文件里的指导一步步编写答案就可.第一个实现KNN分类器. 如果是windows环境,需要首先下载数据集.The CIFAR-10 dat ...

  5. 斯坦福cs231n作业数据集下载

    刚看到斯坦福的cs231n课程,看到有课后作业,于是就想试一试, 作业网址https://cs231n.github.io/assignments2020/assignment1/#q1-k-near ...

  6. CS231n作业2中Cython相关问题的处理

    最近磨磨蹭蹭地学着CS231n,看着满屏幕代码不禁感慨Stanford大神们当真深不可测,作业是以挖空形式给出的.这么多代码要让博主从头写,那还不得写到天荒地老-- 博主使用的是2016年的教学录像和 ...

  7. 斯坦福CS231n作业代码(汉化)Assignment 2 Q4

    编写:土豆 MoreZheng SlyneD 校对:碧海听滔 Molly 总校对与审核:寒小阳 本系列由斯坦福大学CS231n课后作业提供 CS231N - Assignment2 - Q4 - Co ...

  8. Windows本地快速搭建cs231n作业环境

    之前写过一个关于斯坦福cs321n课程的作业环境搭建教程,cs231n_assignment1_配置作业环境+kNN,不过好像很多人还是在搭建过程中遇到一些问题,导致做不了作业.自己动手实践是学习最快 ...

  9. cs231n作业1——knn

    导入数据 import random import numpy as np from cs231n.data_utils import load_CIFAR10 import matplotlib.p ...

  10. cs231n作业-assignment1

    assignment 1 (cs231n) 文章目录 assignment 1 (cs231n) KNN基础 计算distances 方法一:双层循环 计算distances 方法二:单层循环 计算d ...

最新文章

  1. H5调用Android播放视频
  2. Jquery--遮罩弹窗特效
  3. 负载均衡设备oracle,Oracle RAC 服务器端联接负载均衡(Load Balance)
  4. Git——Git基本教程
  5. K-means算法详解及python代码实现
  6. 创建单IP的***网络
  7. 【docker】win10子系统ubuntu安装docker
  8. 1英寸大底手机来了 是索尼的营销噱头吗?
  9. 个人计算机硬件构成的叙述正确的是,2010年职称计算机考试模拟试题及答案(计算机基础)2...
  10. Linux 高级流量控制
  11. np.array(image)的作用
  12. Android Studio 第一个JNI程序
  13. armv8 linux 禁止缓存,禁用CPU高速緩存上ARMv8-A的Linux
  14. RK3568 Android12 长按power键功能设置
  15. 如何用ftp上传到服务器视频文件,ftp如何将文件上传到服务器上
  16. 独特的抖音剧情号应该具备这5个特点
  17. 如何同时对多个 Word 的内容进行批量替换
  18. 求:生意参谋 data 破解,最好是用php
  19. 显示器点距 测试软件,显示器各尺寸点距一览
  20. canal1.1.5 配置kaka

热门文章

  1. 思维导图的了解和使用
  2. 《游戏设计艺术(第二版)》第十二章个人学习
  3. stm32f10x 安装包_Keil5 Pack Installer下载_Keil5 Pack 离线安装包下载 2.2.0 官方正式版_当载软件站...
  4. 蓝桥杯题目练习 水题 [蓝桥杯2019初赛]矩形切割
  5. PID控制算法的C语言实现十 模糊算法简介
  6. html用什么打开swf文件怎么打开,swf文件用什么打开,详细教您打开swf文件的操作...
  7. Java 私塾面试系列
  8. 软件开发技术文档编写规范_在软件开发中编写技术文档
  9. 测试了MySQL实时监控工具Nero Profile SQL
  10. python可以下载百度文库_不用下载券也能下载百度文库资料,Python帮你轻松搞定...