cs231n作业——softmax
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相关推荐
- cs231n作业环境配置
cs231n作业的环境配置 查了很多资料,尝试了很多次,终于成功了 参考文章:http://www.manongjc.com/article/30189.html 首先我的电脑是win10(x86), ...
- 斯坦福CS231n作业代码(汉化)Assignment 3 Q5
生成对抗网络 (GANs) 编写:张礼俊/SlyneD 校对:毛丽 总校对与审核:寒小阳 CS231N到目前位置,所有对神经网络的应用都是判别式模型,给定一个输入,训练产生一个label输出.从直接对 ...
- 【cs231n作业笔记】一:KNN分类器
安装anaconda,下载assignment作业代码 作业代码数据集等2018版基于python3.6 下载提取码4put 本课程内容参考: cs231n官方笔记地址 贺完结!CS231n官方笔记授 ...
- 手把手教你写CS231N作业一 KNN分类器 详细解析 作业源文件 数据集
一些准备工作 python环境 官方课程给出的源文件在这里 根据文件里的指导一步步编写答案就可.第一个实现KNN分类器. 如果是windows环境,需要首先下载数据集.The CIFAR-10 dat ...
- 斯坦福cs231n作业数据集下载
刚看到斯坦福的cs231n课程,看到有课后作业,于是就想试一试, 作业网址https://cs231n.github.io/assignments2020/assignment1/#q1-k-near ...
- CS231n作业2中Cython相关问题的处理
最近磨磨蹭蹭地学着CS231n,看着满屏幕代码不禁感慨Stanford大神们当真深不可测,作业是以挖空形式给出的.这么多代码要让博主从头写,那还不得写到天荒地老-- 博主使用的是2016年的教学录像和 ...
- 斯坦福CS231n作业代码(汉化)Assignment 2 Q4
编写:土豆 MoreZheng SlyneD 校对:碧海听滔 Molly 总校对与审核:寒小阳 本系列由斯坦福大学CS231n课后作业提供 CS231N - Assignment2 - Q4 - Co ...
- Windows本地快速搭建cs231n作业环境
之前写过一个关于斯坦福cs321n课程的作业环境搭建教程,cs231n_assignment1_配置作业环境+kNN,不过好像很多人还是在搭建过程中遇到一些问题,导致做不了作业.自己动手实践是学习最快 ...
- cs231n作业1——knn
导入数据 import random import numpy as np from cs231n.data_utils import load_CIFAR10 import matplotlib.p ...
- cs231n作业-assignment1
assignment 1 (cs231n) 文章目录 assignment 1 (cs231n) KNN基础 计算distances 方法一:双层循环 计算distances 方法二:单层循环 计算d ...
最新文章
- H5调用Android播放视频
- Jquery--遮罩弹窗特效
- 负载均衡设备oracle,Oracle RAC 服务器端联接负载均衡(Load Balance)
- Git——Git基本教程
- K-means算法详解及python代码实现
- 创建单IP的***网络
- 【docker】win10子系统ubuntu安装docker
- 1英寸大底手机来了 是索尼的营销噱头吗?
- 个人计算机硬件构成的叙述正确的是,2010年职称计算机考试模拟试题及答案(计算机基础)2...
- Linux 高级流量控制
- np.array(image)的作用
- Android Studio 第一个JNI程序
- armv8 linux 禁止缓存,禁用CPU高速緩存上ARMv8-A的Linux
- RK3568 Android12 长按power键功能设置
- 如何用ftp上传到服务器视频文件,ftp如何将文件上传到服务器上
- 独特的抖音剧情号应该具备这5个特点
- 如何同时对多个 Word 的内容进行批量替换
- 求:生意参谋 data 破解,最好是用php
- 显示器点距 测试软件,显示器各尺寸点距一览
- canal1.1.5 配置kaka
热门文章
- 思维导图的了解和使用
- 《游戏设计艺术(第二版)》第十二章个人学习
- stm32f10x 安装包_Keil5 Pack Installer下载_Keil5 Pack 离线安装包下载 2.2.0 官方正式版_当载软件站...
- 蓝桥杯题目练习 水题 [蓝桥杯2019初赛]矩形切割
- PID控制算法的C语言实现十 模糊算法简介
- html用什么打开swf文件怎么打开,swf文件用什么打开,详细教您打开swf文件的操作...
- Java 私塾面试系列
- 软件开发技术文档编写规范_在软件开发中编写技术文档
- 测试了MySQL实时监控工具Nero Profile SQL
- python可以下载百度文库_不用下载券也能下载百度文库资料,Python帮你轻松搞定...