关于逻辑回归完成手写数字识别的一点愚蠢错误回顾

2023-05-16

        最近的机器学习课上作业里要我们完成通过神经网络和逻辑回归进行手写数字的识别任务,神经网络的部分通过课上的辅助教材:

神经网络与深度学习

         其中所提供的代码足以完成,另外这本书真的写的很好,在易读性与理解性上在我看来要胜过西瓜书,非常值得推荐!!

书中代码链接我也放在这里:https://github.com/mnielsen/neural-networks-and-deep-learning/blob/master/src/network.py

        当开始完成应用逻辑回归进行手写数字识别时,由于涉及到LogisticRegression的多分类问题,我在网上搜索了一些相关的代码进行学习与参考,以下是源代码:

https://www.jianshu.com/p/ecb908e7a2d7

        由于此处代码所使用的数据集采用的是matlab的加载格式mat,而我们作业中限定的是书中代码所使用的数据集mnist.pkl.gz,起初我直接使用了书中的数据预处理部分代码如下:

         但如果直接将书中的数据集处理方式代入简书里的代码时,会报矩阵乘法中矩阵维度不匹配的错误,刚开始我以为仅仅是源代码的问题,反复调整过矩阵相乘部分的代码,但仔细阅读简书中代码的数据处理时发现,它所使用的数据集是(5000,400),也就是一共有5000条数据,每条数据的维度为20*20,但有意思的是,如果我们print一下书中数据预处理后的结果时,我们会发现书中的代码居然是(50000,2),其中的2是由于经过了zip()函数处理,导致一部分是测试数据的inputs,另一部分则是测试数据的results,但实际上mnist.pkl数据维度应该是28*28=784,这里感觉是被数据预处理(x_{1},x^{_{2}},...,x_{784})整个视作一个维度了,但这样处理之后不符合我们简书中代码输入数据形式的要求。

        针对这一点我痛苦了很久,一直在查找怎么将这一个维度打开的办法,在网上也搜索了很多资料,但是都无法进行将这一维度“打开”的办法,直到我在代码中进行了测试:

        根据我前面的“瞎猜”,这里按道理也应该是(3,1)啊,但当矩阵维度很小时我才明白过来这怎么可能呢,这很显然是一个(3,3)的矩阵,于是我这里才明白过来,是书中代码的数据预处理部分进行了“多余的操作”!最终我发现问题出现在这个函数上:

        这部分函数里把训练数据的输入和输出全部一维向量化,然后将它们用zip()函数组装之后传出来,但就是这一步操作让我们后面在print(train_data.shape)时总是提示我们这是个(50000,2)的矩阵,在数据处理中将这部分取消后再代入简书中代码即可成功运行。

        但这里又有新的问题,简书中的数据维度仅为(5000,400),而我们书中的数据集则是(50000,784),逻辑回归又需要生成10个分类器来进行运算,代码运行时间过长,于是我将书中数据也仅取前5000个数据,新数据集维度为(5000,784),这样就能得到结果,最终结果为:

         太感动了!!!!!没有辜负我这么多天的头疼,现在来看根本不是什么大问题呀,还是自己python的基础太薄弱导致的,在机器学习方面数学基础与理解固然重要,但我认为代码能力也非常重要,正如我们老师所说:“如果你上完我的课还只会调包,那我真的十分失败!”

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于逻辑回归完成手写数字识别的一点愚蠢错误回顾 的相关文章

  • ADC0832芯片原理及使用教程

    1 芯片简介 ADC0832是一种 8 位分辨率 250KHZ转换频率 双通道 A D 转换芯片 其内部电源输入与参考电压的复用 xff0c 使得芯片的模拟电压输入在 0 5V 之间 芯片转换时间仅为 32 S xff0c 据有双数据输出可
  • DS1302时钟芯片介绍及使用教程

    1 芯片简介 DS1302 涓流充电计时芯片包含一个实时时钟 日历和 31 字节的静态 RAM 通过简单的串行接口与微处理器通讯 这个实时时钟 日历提供年月日 时分秒信息 对于少于 31 天的月份月末会自动调整 还有闰年校正 由于有一个 A
  • LCD12864显示屏原理及使用教程

    1 芯片简介 LCD12864液晶显示模块是 128 64点阵的汉字图形型液晶显示模块 xff0c 可显示汉字及图形 xff0c 内置 8192个中文汉字 xff08 16X16 点阵 xff09 xff08 需带有字库的型号才能显示中文
  • 51单片机wifi物联网的浇花控制系统设计

    硬件设计 浇花控制系统采用51单片机与LCD液晶显示屏来实现 xff0c 利用温度 湿度传感器及相应的显示 驱动执行机构 报警装置等实现温室作物生长环境控制器的设计 硬件电路主要由51单片机 43 最小系统 43 lcd1602显示屏 43
  • IO-3.6.linux应用编程和网络编程第6部分-朱有鹏-专题视频课程

    IO 3 6 linux应用编程和网络编程第6部分 3455人已学习 课程介绍 本课程讲解linux中的IO部分 xff0c 包括非阻塞IO 多路复用IO 异步IO和内存映射IO等 本课程目标是让大家对并发情况下阻塞式IO的困境有所认识 x
  • stm32f103最小系统板详细介绍

    一 什么是单片机最小系统 常见的单片机最小系统为单片机能独立运行程序及控制外围电路的最简单电路 xff0c 主要由单片机 晶振电路 复位电路三部分构成 Stm32f103c8t6也不例外 xff0c 构成最小的运行电路也需要以上三部分 St
  • 基于51单片机的光照强度检测系统

    一 硬件方案 本设计采用单片机作为数据处理与控制单元 xff0c 为了进行数据处理 xff0c 通过光敏电阻来感应光强弱变化 xff0c 经过ADC0804转换 xff0c 直接将数字信号送入到单片机中进行数据处理 单片机数据处理之后 xf
  • ULN2003步进电机驱动电路详解

    一 ULN2003芯片介绍 ULN2003 是高耐压 大电流达林顿陈列 xff0c 由七个硅 NPN 达林顿管组成 该电路的特点如下 xff1a ULN2003 的每一对达林顿都串联一个 2 7K 的基极电阻 在 5V 的工作电压下它能与
  • 基于STM32单片机太阳能电池板追日光跟踪系统设计

    硬件方案 本设计采用光电跟踪的方法 xff0c 利用步进电机驱动 xff0c 由光电传感器根据入射光线的强弱变化产生反馈信号到微机处理器 微机处理器运行程序 xff0c 通过对跟踪机构进行控制 xff0c 调整太阳能电池板的角度实现对太阳的
  • 基于51单片机的甲醛浓度检测仪

    硬件方案 本设计以51单片机作为控制核心 xff0c 甲醛模组传感器作为检测信号源 xff0c 实现在甲醛浓度超过一定值的时候控制扬声器提示 本课题以C51系列的STC89c52RC为控制核心 xff0c 甲醛模组传感器模块检测信息 xff
  • 基于51单片机的教室智能照明控制系统

    硬件方案 本系统以51单片机作为控制模块的核心部件 xff0c 采用热释红外人体传感器检测人体的存在 xff0c 采用光敏三极管构成的电路检测环境光的强度 xff1b 根据教室合理开灯的条件 xff0c 通过对人体存在信号和环境光信号的识别
  • 51单片机的温控风扇设计

    一 硬件方案 系统采用51单片机作为控制平台对风扇转速进行控制 可由用户设置高 低温度值 xff0c 测得温度值在高低温度之间时打开风扇弱风档 xff0c 当温度升高超过所设定的温度时自动切换到大风档 xff0c 当温度小于所设定的温度时自
  • 如何创建新的虚拟机并安装Linux系统(一步到位,附ISO映像文件)

    安装之前需提前准备好VMware和iso镜像文件 xff0c 以下是博主提供的资源 xff0c 有需要的小伙伴可以自取 xff1a rhel8 3镜像及VMware安装包 链接 xff08 永久有效 xff09 xff1a 百度网盘 请输入
  • 你可能没听说过的8个堪称神器的网站,java分布式架构视频百度云

    1 IData 知识检索 61 61 61 61 61 61 61 61 61 61 61 61 61 大学生涯中大家都会用到各种文献资料往往都是从知网下载的 xff0c 但如果不在学校或者学校没有购买知网权限 xff0c 我们就需要一个新
  • ubuntu使用命令设置静态IP地址

    1 打开ubuntu终端 xff0c 输入 ip a 查看网卡接口和ip地址 xff1a 2 进入 etc netplan目录使用ls l 查看网络配置文件 xff1a 3 使用vi打开网络配置文件 xff0c 配置相应的IP地址 xff0
  • linux线程全解-linux应用编程和网络编程第7部分-朱有鹏-专题视频课程

    linux线程全解 linux应用编程和网络编程第7部分 4635人已学习 课程介绍 本课程讲解linux中线程 xff0c 首先使用多进程解决上个课程中提出的并发式读取按键和鼠标的任务 xff0c 然后引出多线程并讲解多线程的优势 xff
  • ubuntu18.04环境系安装指定版本gitlab-ce

    1 安装指定版本gitlab ce 13 5 3 ce 0 sudo apt get update sudo apt get install gitlab ce 61 13 5 3 ce 0 2 执行配置 xff1a sudo gitlab
  • ubuntu网络正常连接但无法上网

    1 先查看网络端口 xff1a ip a 2 使用 xff1a sudo dhclient ens9
  • 由于找不到mfc100u.dll,无法继续执行代码

    1 在win10环境下 xff0c 安装了CATstudio后 xff0c 打开提示 xff0c 由于找不到mfc100u dll xff0c 无法继续执行代码 xff0c 重新安装可能会解决此问题 xff1a 2 下载DirectX修复工
  • Pads logic 创建文件时发生严重错误

    在win10家庭版中安装pads logic 打开时要么就在画图是一用就卡 xff0c 要么就提示其他的问题 xff1a 解决方法 xff1a 第一 xff0c 重装了win10操作系统换成专业版 xff1b 第二 xff0c 将Windo

随机推荐