cs231n作业1——Softmax

参考文章:cs231n assignment1——softmax

Softmax

softmax其实和SVM差别不大,两者损失函数不同,softmax就是把各个类的得分转化成了概率。
损失函数:在这里插入图片描述

def softmax_loss_naive(W, X, y, reg):loss = 0.0dW = np.zeros_like(W)num_classes = W.shape[1]num_train = X.shape[0]for i in range(num_train):scores = X[i].dot(W)                # 矩阵点乘:第 i 张照片在各类别上的得分scores -= np.max(scores)            # 减去最大得分,减小计算量correct_class_score = scores[y[i]]  # 接下来三行是损失函数的计算exp_sum = np.sum(np.exp(scores))loss += -correct_class_score + np.log(exp_sum) # np.log()以e为底for j in range(num_classes):if j == y[i]:dW[:, y[i]] += (np.exp(scores[y[i]])/exp_sum-1)*X[i]else:dW[:, j] += np.exp(scores[j])/exp_sum*X[i]    loss /= num_train                      # 求平均损失loss += reg * np.sum(W * W)            # 损失加上正则化惩罚dW /= num_train                        # 求平均梯度dW += 2.0*reg*Wreturn loss, dW

用向量法实现 Softmax

def softmax_loss_vectorized(W, X, y, reg):loss = 0.0dW = np.zeros_like(W)num_classes = W.shape[1]num_train = X.shape[0]scores = X.dot(W)                                                  # N*C 的矩阵scores -= np.max(scores, axis=1, keepdims=True)                    # 减去每行(每张图片对于每一类)的最大值correct_class_score = scores[range(num_train),y]exp_sum = np.sum(np.exp(scores), axis=1, keepdims=True)            # 按行求和,并保持为二维(列向量)loss = -np.sum(correct_class_score) + np.sum(np.log(exp_sum))      # 损失函数公式并求和loss = loss/num_train + reg * np.sum(W * W)med = np.exp(scores)/exp_sum         # 对于j!=yi的情况,dw=np.exp(scores[j])/exp_sum*X[i]med[range(num_train),y] -= 1         # 对于j=yi的情况,dw=(np.exp(scores[j])/exp_sum-1)*X[i]dW = X.T.dot(med)                    # 最后同时乘以 X[i]dW /= num_traindW += 2.0*reg*Wreturn loss, dW

之后用随机梯度下降法优化损失函数,最后进行超参数的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/42374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】进程的概念 + 查看进程

前言: 在前面我们学习了Liunx的基本指令和权限相关知识,还有基本工具的使用,有了以上的基础知识我们本章将正式接触Linux操作系统。 目录 1.冯诺依曼体系结构1.1 内存存在的意义1.2 程序加载到内存的含义1.3 程序的预加载: 2 .认识…

安卓备忘录App开发

安卓备忘录APP开发,文章末尾有源码和apk安装包 目标用户: 普通安卓手机用户,需要一个简单易用的备忘录App来记录和管理日常事务。 主要功能: 用户注册: 用户可以创建一个账号,输入用户名和密码。 用户登录: 用户可以通过用户名和密码登录到应用。 用户信息存储: 用户名和…

TCP一定可靠吗

背景 公司某个服务发送TCP报文后,得到的响应是非预期数据 原因竟然是:TCP包的 payload 数据某个bit位被翻转,但是 checksum 的值一样,错误的包被分发给了上层服务 Checksum介绍 IP 头有自己的 Checksum,TCP、UDP 也有自己的 Checksum,分别校验不同部分的数据 IP 头的 …

触摸与指针:深入探索 WebKit 的 Pointer Events 支持

触摸与指针:深入探索 WebKit 的 Pointer Events 支持 在现代 Web 应用中,用户交互的方式越来越多样化,包括触摸、鼠标、笔等多种输入设备。WebKit 作为领先的浏览器引擎之一,对指针事件(Pointer Events)的…

影响Mongodb数据写入性能的因素

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第83篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题,欢迎在文章下面点个赞,或者关…

Java面试之并发与网络通信常见面试题

并发编程部分 1. 什么是进程和线程? 进程:操作系统分配资源的最小单位,各个进程之间占据独立的寻址空间,运行也是独立运行,进程间通信需要一些机制。 线程:程序执行的基本单位,一个进程可以开…

android 7.0 tts文字转语音

支持中文的SDK 语音引擎下载 import android.content.Context; import android.speech.tts.TextToSpeech; import android.util.Log;import java.util.Locale;public class SystemTTS {private static final String TAG "SystemTTS";private static SystemTTS insta…

聚星文社一键生成工具绘唐3科技AI工具

聚星文社一键生成工具绘唐3科技AI工具 绘唐3.0——用户文档 - 飞书云文档 聚星文社一键生成工具绘唐3科技AI工具是一个基于人工智能技术的辅助创作工具,可以帮助用户快速生成有关唐朝科技的文本内容。该工具利用自然语言处理和机器学习等技术,通过输入一…

帕金森病患者在选择运动疗法时应该注意哪些事项?

帕金森病患者在选择运动疗法时,应该遵循以下几点注意事项: 个性化运动处方:根据患者的病情、年龄、健康状况、以往运动能力等因素,制定个体化的运动处方。 避免运动负荷过大:运动时间不宜过长,注意控制心率…

JavaWeb-【1】HTML

笔记系列持续更新,真正做到详细!!本次系列重点讲解后端,那么第一阶段先讲解前端 目录 1、Javaweb技术体系 2、BS架构说明 3、官方文档 4、网页组成 5、HTML 6、HTML快速入门 7、HTML基本结构 8、HTML标签 ​9、HTML标签使用细节 ①、font标签 ②、字符实体 ③、标…

SSM养老院管理系统-计算机毕业设计源码02221

摘要 本篇论文旨在设计和实现一个基于SSM的养老院管理系统,旨在提供高效、便捷的养老院管理服务。该系统将包括老人档案信息管理、护工人员管理、房间信息管理、费用管理等功能模块,以满足养老院管理者和居民的不同需求。 通过引入SSM框架&#x…

通过消息传递同步操作

通信顺序进程(CSP) 是一种形式语言,用来描述并发性系统间进行交互的模式 每个线程或进程独立运行,它们之间仅通过消息传递进行通信,而不是直接共享状态 每个线程实际上都是一个状态机:当它接收到一条消息时…

【数据结构】05.双向链表

一、双向链表的结构 注意:这里的“带头”跟前面我们说的“头节点”是两个概念,带头链表里的头节点,实际为“哨兵位”,哨兵位节点不存储任何有效元素,只是站在这里“放哨的”。 “哨兵位”存在的意义:遍历循…

人工智能系列-Pandas基础

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” Pandas简介 Pandas是Python语言的拓展程序库,用于数据分析。 Pandas是一个开放源码,BSD许可的库,提供高性能,易于使用的数据结…

vue和js实现点击跳转 统计点击量 刷新页面不丢 使用localstorage存储

使用localStorage存储点击量是一种简单有效的方法,它允许你即使在页面刷新后也能保留数据。以下是如何使用localStorage来实现点击跳转并统计点击量,同时确保刷新页面时点击量不丢失的步骤: 初始化点击量:在页面加载时&#xff0c…

YOLO V7网络实现细节(2)—网络整体架构总结

YOLO V7网络整体架构总结 YOLO v7网络架构的整体介绍 不同GPU和对应模型: ​​​​​​​边缘GPU:YOLOv7-tiny普通GPU:YOLOv7​​​​​​​云GPU的基本模型: YOLOv7-W6 激活函数: YOLOv7 tiny: leaky R…

6、Redis系统-数据结构-07-QuickList

七、快速列表(QuickList) 快速列表(QuickList)是 Redis 中用于实现列表(List)类型的一种高效数据结构。它结合了双向链表和压缩列表的优点,既支持高效的顺序访问,又能有效节省内存。…

数据结构第13节 无向图

无向图是图论中的一个基本概念,它是数学和计算机科学中用来描述一组对象(顶点)以及它们之间的成对关系(边)的结构。在无向图中,边是没有方向的,这意味着边所连接的两个顶点可以互相访问。 定义…

vue项目实现堆叠卡片拖动切换效果

实际效果 实现流程 1. 实现卡片位置堆叠 将父元素的 position 设置成relative ,卡片的position 设置成 absolute 即可。 2. 消除图片的移动 如果卡片上有图片,默认拖动的时候就会导致像上图一样变成了选中图片移动,从而没法触发拖动事件。消…

苹果电脑能玩赛博朋克2077吗 如何在mac上运行赛博朋克2077 crossover能玩什么游戏

各位喜欢赛博朋克风的一定不能错过《赛博朋克2077》。那么《赛博朋克2077》是一款什么样的游戏?《赛博朋克2077》在苹果电脑上可以运行吗?一起来看看介绍吧。 一、《赛博朋克2077》是一款什么样的游戏? 《赛博朋克2077》是一款由CD Projekt …