cs231n assignment1 softmax作业

深度学习 --- stanford cs231 编程作业(assignment1,Q3: softmax classifier) 本文是我自己在写cs231n的assignment1时的个人笔记,供参考。 阅读详情
import numpy as np
from random import shuffle

def softmax_loss_naive(W, X, y, reg):
  """
  Softmax loss function, naive implementation (with loops)

  Inputs have dimension D, there are C classes, and we operate on minibatches
  of N examples.

  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
  """
  # Initialize the loss and gradient to zero.
  loss = 0.0
  dW = np.zeros_like(W)

  #############################################################################
  # TODO: Compute the softmax loss and its gradient using explicit loops.     #
  # Store the loss in loss and the gradient in dW. If you are not careful     #
  # here, it is easy to run into numeric instability. Don't forget the        #
  # regularization!                                                           #
  #############################################################################
  num_train = X.shape[0]
  num_classes = W.shape[1]

  for i in range(num_train):
    scores = X[i].dot(W)
    correct_scores = scores[y[i]]
    scores -= correct_scores
    loss_i = -np.log(np.exp(scores[y[i]])/np.sum(np.exp(scores)))
    loss += loss_i
    for j in range(num_classes):
      p = np.exp(scores[j]) / np.sum(np.exp(scores))
      if j == y[i]:
        dW[:, j] += (-1+p)*X[i]
      else:
        dW[:, j] += p*X[i]
  
  loss = loss/num_train + reg*np.sum(W*W)
  dW = dW/num_train + 2*reg*W
 

  #############################################################################
  #                          END OF YOUR CODE                                 #
  #############################################################################

  return loss, dW


def softmax_loss_vectorized(W, X, y, reg):
  """
  Softmax loss function, vectorized version.

  Inputs and outputs are the same as softmax_loss_naive.
  """
  # Initialize the loss and gradient to zero.
  loss = 0.0
  dW = np.zeros_like(W)

  #############################################################################
  # TODO: Compute the softmax loss and its gradient using no explicit loops.  #
  # Store the loss in loss and the gradient in dW. If you are not careful     #
  # here, it is easy to run into numeric instability. Don't forget the        #
  # regularization!                                                           #
  #############################################################################
  num_train = X.shape[0]
  scores = X.dot(W)
  # print(scores.shape)  (500,10)
  correct_scores = scores[np.arange(num_train),y]
  # print(correct_loss_scores.shape)  (500,)
  correct_scores = np.reshape(correct_scores,(num_train,-1))
  # print(correct_loss_scores.shape)  (500,1)
  scores -= correct_scores
  loss = np.sum(-np.log(np.exp(scores[np.arange(num_train),y])/np.sum(np.exp(scores),axis=1)))

  
  p = np.exp(scores)/np.reshape(np.sum(np.exp(scores), axis=1),(num_train,-1))
  p[np.arange(num_train),y] -= 1
  dW = (X.T).dot(p)/num_train + 2*reg*W

  # adjust_scores = np.exp(scores - np.max(scores, axis=1).reshape(-1, 1))
  # sum_scores = np.sum(adjust_scores, axis=1).reshape(-1, 1)
  # class_prob = adjust_scores / sum_scores  # shape [N, C]
  # prob = class_prob[range(num_train), list(y)]
  # total_loss = -np.log(prob)
  # loss = np.sum(total_loss) / num_train + reg * np.sum(W * W)


  loss = loss/num_train + reg*np.sum(W*W)
  #############################################################################
  #                          END OF YOUR CODE                                 #
  #############################################################################

  return loss, dW

 

深度学习系列之cs231n assignment1 softmax(四) 写在开头:assignment对于softmax的作业对于svm差别就在于损失函数与梯度的差别,其余地方几乎是一样的,比如在预测的时候仍然选择得分对高的类,所以今天就来开始softmax部分的作业分享。 内容安排 今天主要会对softmax损失函数以及softmax求梯度进行讲解,然后通过编程来完成关于循环计算softmax loss function和向量计算loss function,然后... 阅读详情

相关推荐

cs231n assignment1

斯坦福公开课231n的第一次作业,里面有数据集以及指导操作。

cs231n assignment1 softmax

Softmax Softmax的损失函数为 Li=−log⁡pyi=−log⁡(efyi∑jefj)=−fyi+log⁡∑jefjL_{i}=-\log p_{y_{i}}=-\log \left(\frac{e^{f_{y_{i}}}}{\sum_{j} e^{f_{j}}}\right)=-f_{y_{i}}+\log \sum_{j} e^{f_{j}}Li​=−logpyi​​=−log(...

SpicyCoder的博客 2048

WinCC与施耐德PLC的Modbus TCP通信实战指南

本文详细解析了西门子WinCC与施耐德PLC通过Modbus TCP协议实现通信的完整实战流程。内容涵盖硬件网络配置、Modbus地址映射核心规则、WinCC驱动连接建立、变量创建及高级数据访问技巧,并提供了常见故障排查思路,帮助工程师高效解决跨品牌设备通信难题。

weixin_29194693的博客 1001

CS231N作业:A1Q3 softmax

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DbX7feHW-1685148498609)(output_13_0.png)]

weixin_72100405的博客 316

谷歌(Google) Pixel 8/9 Pro(xl)如何获取 root 权限

谷歌(Google)Pixel8/9Pro(xl)等系列手机破解后,会在你的init_boot.img同路径生成一个magisk_patched.img,把这个文件拷贝到adb目录下,稍后还得把它刷回手机,这样手机才能获得Root权限,因为安卓14、15以后的内核结构调整,和Pixel7及以下的6、5、4、3、2等系列手机破解稍微不一致。因为ROOT权限的获取,需要使用ROM中的内核文件,个人强烈建议在官网下载ROM,直接刷最新版,其他地方的ROM如果没有校验码,请自行斟酌是否使用。

bugsycrack的博客 3490

Spring Boot Swagger未授权访问漏洞:原理、风险与修复方案详解

在微服务架构中,API文档管理是开发与运维的重要环节。Swagger作为RESTful API文档生成与调试的标准化工具,通过OpenAPI规范自动生成交互式接口文档,极大提升了开发效率。然而,其默认配置往往缺乏访问控制,导致文档端点直接暴露,形成未授权访问漏洞。从技术原理看,该漏洞源于Spring Boot等框架集成Swagger时,相关端点未纳入安全框架的拦截范围,攻击者可通过扫描常见路径获取完整的接口定义与数据结构。这不仅会造成敏感信息泄露,更可能成为越权操作、数据篡改等深度攻击的入口点。在工程实践中

weixin_42524171的博客 498

CS231N课程作业Assignment1--SVM

CS231N作业

鲁棒最小二乘支持向量机 2999

Xilinx/AMD公司7系列FPGA的ISERDESE2仿真的”天坑”(附verilog的源码vivado仿真工程)

研究LVDS输出接口的ADC与7系列(ZYNQ)FPGA对接过程中,在Vivado中搭建了ISERDESE2的仿真工程,仿真结果ISERDESE2的并行输出口一直输出X或Z,这个坑之大,耗费了我数天的时间,可以称为“天坑”了。同步复位的要求肯定是高于异步复位的,古话说得好“两害相权取其轻”,所以,跟古话对着干就对了!就当RST是同步复位吧,最后经过反复验证,发现。开始怀疑复位信号是否高电平持续时间不够长?但是没有查到复位时间的要求 : - (

FPGA艺术家的博客 171

cs231n作业:assignment1 - softmax

个人博客:fangzh.top,欢迎来访 softmax是最常用的分类器之一。 softmax和svm都是常用的分类器,而softmax更为常用。 具体可以参考我这篇的最后,ng老师有讲,softmax 前面数据集的都跟SVM的一样。 直接进入loss和grads推导环节。 Li=−log(efyi∑jefj)L_i = -log(\frac{e^{f_{y_i}}}{\sum_j e^{f_...

Fangzh的技术博客 1480

Qt Creator牵手DeepSeek,开启AI开发新征程

Qt Creator 是一款功能强大的跨平台集成开发环境(IDE),专为 Qt 应用程序开发量身定制。它支持在编程过程中使用 GitHub Copilot 等编码助手,能帮助开发者为桌面、移动端和嵌入式平台创建软件。在代码编辑方面,Qt Creator 具备代码补全、语法突出显示、重构等功能,内置文档也随手可得,极大提高了代码编写的效率和准确性。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 7189

课设:FPGA音频均衡器 verilog设计及仿真 加报告

未来,随着FPGA技术的进一步发展和应用场景的扩大,FPGA音频均衡器将发挥出更大的作用,并为音频领域带来更多创新和突破。(a)音乐制作:均衡器可以调整音频信号中不同频段的能量分布,使得乐器声音更加明亮、动感,从而提升音乐制作的质量和创作的灵活性。以上步骤提供了设计一个音频均衡器的大致过程,但值得注意的是,具体实现的细节和复杂度可能因设计要求和所使用的平台而有所不同。确保设计满足预期的性能和要求。确定均衡器的功能和要求:定义你的音频均衡器需要实现的功能,包括频率范围、增益范围以及可调参数数量等。

QQ_778132974的博客 1588

cs231n作业1——Softmax

softmax其实和SVM差别不大,两者损失函数不同,softmax就是把各个类的得分转化成了概率。之后用随机梯度下降法优化损失函数,最后进行超参数的选择。

m0_52775136的博客 661

Dify搭建AI测试用例生成器

1、获取产品需求文档2、解读、分析、挖掘需求点,提炼为测试点3、依据测试点,生成详细的测试用例4、输出测试用例1、打开 Dify 控制台,依次点击【工作室】-【ChatFlow】-【创建空白应用】。

十二测试录 1371

cs231n作业,assignment1-softmax详解

softmax 总公式L=−1Nlog⁡∑(esyi∑jesj)+0.5×λ∣∣W∣∣L =-\frac{1}{N} \log \sum{\left( \frac { e ^ { s_ { y _ { i } } } } { \sum _ { j } e ^ { s _ { j } } } \right)}+0.5\times\lambda||W||L=−N1​log∑(∑j​esj​esyi...

qq_24906797的博客 1868

Ubuntu零基础入门到精通【4.4讲】:网络、蓝牙、显示器、声音与输入法设置!

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。 本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。

**My Coding Family** 1486

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

cs231n作业:Assignment1-softmax

def softmax_loss_naive(W, X, y, reg): """ Softmax loss function, naive implementation (with loops) Inputs have dimension D, there are C classes, and we operate on minibatches of N exa...

MR CODER 443

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

CS231n作业+代码实践:Assignment1 Softmax

Softmax exercise 这一章节我们需要完成: 用向量化的方法完成Softmax损失函数 完成用全向量化的方法来计算理论梯度 用数值话方法来检查梯度是否正确 使用一个验证集来估计学习率和正则化值 用SGD来优化损失函数 可视化最后的学习到的权重W 导入之前代码,导入数据集 from __future__ import print_function import random impo...

qq_42931831的博客 398

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

CS231N课程作业Assignment1--Softmax

CS231N作业

鲁棒最小二乘支持向量机 597

cs231n课程作业assignment1(Softmax)

前言:以斯坦福cs231n课程的python编程任务为主线,展开对该课程主要内容的理解和部分数学推导。 主要介绍了机器学习中Softmax 的原理和SVM与其的区别。

Rain的博客 2237

CS231n-Assignment1(作业1)-softmax

[TOC] softmax这个比较简单,和之前的SVM基本差不多,只是用的公式不太一样罢了. 涉及到两个文件 第一个是根目录下的softmax.ipynb 第二个是/CS231n/classifier/softmax.pysoftmax.ipynbSoftmax exercise Complete and hand in this completed worksheet (including

tuzixini的博客 2561

斯坦福深度学习课程cs231n assignment1作业笔记三:softmax实现相关

任务 实现向量化的损失函数 实现向量化的梯度计算 分析梯度与数值梯度的验证 使用验证集来选择超参数 使用SGD优化方法 可视化权重 理论知识 softmax损失函数 令W为权重矩阵,大小为D×C;x为输入,大小为1×D;b为偏置项,大小为1×C。那么模型的输出为: XW + b 为一个向量S(1×C),对应样本属于各个类别的得分。在实际实现中偏置b被放入了W中,只需要在输入X后面多加一个1即可...

持久决心的博客 1061

攻克CS231n.github.io作业:2025 Assignment 1图像分类详解

想要快速掌握CS231n作业中的图像分类技巧吗?本指南将带你深入理解2025 Assignment 1的核心内容,从基础概念到实践应用,助你轻松完成这份重要的神经网络作业!🚀 CS231n课程作为深度学习领域的经典课程,其Assignment 1作业是学习图像分类的绝佳起点。通过这份作业,你将建立起完整的图像分类知识体系,为后续的深度学习学习打下坚实基础。 ## 🔍 作业概述与学习目标

gitblog_00022的博客 498

cs231n_Assignment1_softmax

作业内容:首先加载数据库,创建训练集,验证集,测试集用循环实现loss和grad的计算:--&gt;这里在算e的次幂之前先整体移位,防止太大溢出,softmax loss梯度计算:f=X*W当j=yi时:当j != yi时:详细推倒链接:http://blog.csdn.net/u014313009/article/details/51045303用向量形式计算loss和grad,比较可知向量快很...

ChuanjieZhu 522

CS231n Spring 2019 Assignment 1—KNN

相关链接 在暑假里面粗略地学习了一下CS231n的课程,个人感觉非常有收获,对于入门深度学习中的计算机视觉特别有效。现在想通过写博客这种方式,来再一遍地找漏巩固。下面是一些课程的官方链接: 网页 说明 课程主页 这个网页上还有2015到2018的过去几年的课程链接 课程笔记 有三次作业链接和三个模块的笔记、教程 详细的教学大纲 有对应视频课程的slides,拓展阅读,也包含...

laizi_laizi的博客 1031

cs231n 课程作业 Assignment 1

Assignment 1完成 这里 的课程笔记中 Module 1: Neural Networks 的阅读。作业要求见 Assignment #1: Image Classification, kNN, SVM, Softmax, Neural Network,主要需要完成 kNN,SVM,Softmax分类器,还有一个两层的神经网络分类器的实现。Download  The CIFAR-10 d...

gdamichael的博客 308

cs231n assignment1 tips

1. SVM求dW 这个问题我卡了很久,一直想不通这里到底怎么算的,在GitHub上看了好几个人的代码也硬是没搞懂,最后参考了课程论坛(https://www.reddit.com/r/cs231n/comments/40wh5s/assignment_1_svm_tips/)重新读了几遍这段文字,才搞懂了计算dW的时候分和两种情况,其中前者在score求和的循环中,每一次都要加一遍,一共是

miluzhiyu的专栏 570
上一篇: cs231n assignment1 svm作业
下一篇: cs231n assignment1 two layer net作业
船桥
博客等级 码龄9年 5粉丝 194原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值