机器学习:第四篇 快速构建一个CNN神经网络(识别MNIST手写数字)
每当想要学习神经网络的时候,每当想要自己搭建一个神经网络的时候,每当看到别人的神经网络错综复杂就劝退的时候,不如尝试一下搭建一个最简单的CNN试试。或许会有那种搭积木的感觉。
mnist数据集
mnist手写数字数据集是一系列的28x28x1的灰度图片,如图所示:
环境搭建
我的环境如下:
Python 3.10.1
TensorFlow 2.9.1
具体的安装办法可以百度一下。
网络结构
我们经常把神经网络比作黑盒模型,那么黑盒就要有一个输入与输出,我们知道MNIST手写数字是一张张28*28像素的图片,那么输出就是对应的0-9的标签数字。
输出层
如果直接输出0-9,那么就会出现数字之间的相关性,比如1后面是2,在生成的神经网络的权重就会带有数字的顺序特征,所以一般的输出采用的是one-hot模式,就是用一个1维的矩阵来表示输出。
例如:
3:[0 0 0 1 0 0 0 0 0 0]
5:[0 0 0 0 0 1 0 0 0 0]
各个输出矩阵之间相互正交,乘积为0。
最后会用一个全连接层来将卷积运算之后的矩阵映射到one-hot上,并使用softmax将输出转换为概率。
...
记录一份考研经验
考研终于是告一段落了。
写在前面
最近还有很多同学还没有复试完,也可以看看。承蒙老师看的起,复试给我打了90分,虽然初试比较糟糕只有374,刚好压复试线进去的,所以说如果是初试像我一样压线进的同学千万不要慌张,要相信自己。
初试经验
初试成绩比较糟糕,不太具有太大的参考价值(不是)。
政治
肖秀荣,永远的神,你可以不相信自己,但你一定要相信肖老师,每年都有人不相信肖老师,每年都真香。前期的话,主要做一些选择题为主,可以从各种渠道或者老师那里弄到他们出的选择题题目,做到熟知其中的概念。其实基本上不用担心政治,因为这个真的拉不开差距,主要是看个人悟性和肖秀荣老师的发挥(肖八肖四),应该将复习的重心放在数学和专业课。
英语
英语就一个,对于基础薄弱的同学来说(比如某四级艰难爬过的学长),背单词永远是提升英语最快的方式,没有别的捷径。推荐使用墨墨背单词,真的好用。
数学
这次数学有点拉胯,虽然考完之后出来一对答案,选择填空全对,很开心,但是后面大题错太多了,22年的数学估计会比较难,20年是这届的数学命题组第一次命题,没有经验,导致题目非常的难,21年又非常简单,预测22年会比20年稍微简 ...
GoLang:第一篇 The Way To Go!(Go语言入坑指南)
The Way To Go!第一次学,我也不是很懂,有错误麻烦指出一下。
Just Go
语言之间没有孰优孰劣,Python的易用和C的高性能都,各家有各家的长处。而掌握一门语言就能走遍天下的时代即将过去(JAVA除外),未来一定是多钟语言之间相互融合相互穿插的时代,而Go的热度趋势也在不断的上升,所以今天开一个新坑,从零学习Go语言。今天就先实现一个Hello world。
起源与发展
详情看百度百科。
安装Go环境
Download Go
在GooGle的GoLang网站可以直接下载Go的二进制发行版。点击下载
而Go的官网:http://golang.org/在国内是没法访问的,需要一点点的爬墙手段。
打开PowerShell,输入go version,可以看到go version go1.15.6 windows/amd64就代表成功安装了。
安装IDE
一般推荐使用GoLand,可以省下很多麻烦事儿。
我这里使用的是VsCode,能用就行,不强求。
配置环境
当我们新建了一个Go文件之后,会提示需要安装Go的依赖,直接在VsCode里面安装依赖是不行的,会提示失败。
由 ...
再见2020
冬夜气温骤降,又是平凡的一天。
今早醒来,钻出被窝,太阳刺在脸上,恍惚间发现2020就剩最后一天了。
2020,多么好听的数字,可与我悲惨的遭遇却形成鲜明的对比。
希望在接下来的2021年,能够翻开新的一页。
愿一切美好都如期而至,喜欢的都拥有,失去的都释怀。
树莓派:第三篇 用树莓派做个语音助手
树莓派功能十分强大,作为一个微型电脑,独特的阵脚设计使得树莓派开发的自定义程度非常高。本篇博客通过使用python语言,封装一个简单的语音助手程序。
零、物品清单
123451:一个树莓派(3代、4代皆可)2:免驱的usb声卡(声卡需接在树莓派usb接口)3:麦克风(接在声卡上)4:有线音响(音响可连在声卡上,也可连在树莓派的3.5mm接口上)(树莓派播放设备默认使用3.5mm接口,具体过程需要自定义播放设备)
如果要设置usb声卡输出,参考教程配置声卡教程,如果使用默认3.5mm接口输出可以忽略。
设计语音助手有如下过程:录音、语音识别、图灵机器人对话、语音合成,以下对各个过程进行介绍。
一、pyaudio录音
使用python语言进行录音,主要是将说话者声音输出成一段音频文件。对于python来说,这很容易。通过引用pyaudio库,可以进行录音、播放、生成wav文件等。
首先,我们在树莓派上需要下载pyaudio库: pip3 install pyaudio
在pyaudio的官网介绍上有对pyaudio的详细介绍pyaudio官网,以官网示例:
创建一名为rec的python ...
树莓派:第二篇 使用网页控制你的树莓派
树莓派就相当于一个简单的带GPIO口的Linux电脑,他的拓展性非常的强。我们可以用它来实现很多功能,特别是将树莓派当做是一个服务器,通过网页与树莓派进行交互。这个是一个用网页控制树莓派小车的程序。
今天的内容非常的少,所以很快就可以看完。
网页内容
我们首先要在网页上绘制一些按键,通过按键来控制树莓派。绘制方法比较简单,建议自学。将一下代码保存并命名为index.html
index.html12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale ...
大数据:第二篇 使用echarts工具实现数据可视化
echarts上手简单、自定义高。
本篇学习笔记适合前端小白,使用echarts不需要了解太多的js、HTML。教程分为两个部分:echarts学前准备,echarts学习记录
echarts学前准备
一、使用编辑器
echanrts可视化工具,通过HTML语言进行编写。一般编辑HTML的编辑器有Adobe Dreamweaver、Hbulider等编辑器(编辑器下载使用请百度)
具体编辑器可参考网址:编辑器参考 。
二、下载官方echarts.js文件
echarts工具,实则是js文件,通过编辑网页HTML调用js文件,来实现。
官网:官网下载链接
官网参考下载方式较多,建议使用方法一:从下载的源代码或编译产物安装,下载带有原码的js文件。(如有下载疑问请自行百度)
三、5分钟上手echarts
上手echarts请参考,官网——文档——教程,参考案例十分简单。
考虑到很多小白不会创建HTML项目,以下附上教程:
具体在Hbulider进行如下操作
1、新建HTML项目,如图
2、将必要的echarts.js文件粘贴到js目录下
(我们默认放到js,养成归档习惯)
3、编辑 ...
大数据:第一篇 配置一个spark+Scala的环境
今天教大家配置一个IDEA的环境,以及如何新建一个工程,废话不多说,搞起来
1.下载IDEA
这里推荐一个微信公众号软件安装管家,关注后给它发送软件名,像下面这样:
选择一个最新的版本,最好是英文版
ps:IDEA已经有2020版,想要最新版的可以去官网下载再百度破解方法
点进去之后,就可以看到百度网盘的链接以及安装方法,写的很详细,所以我这里就不再赘述了
2.新建工程
3.添加scala文件夹
4.添加scala SDK
ps:为了版本匹配,不是对工程很了解的同学尽量下载2.10.4 2.12.10,后面我添加的依赖都是这个版本
如果没有这个选项的话,要先安装Scala插件
5.修改工程目录
6.设置settings.xml文件
ps:有些同学是 Create ‘settings.xml’
把你原先的settings.xml的内容删掉,替换成下面这段
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545 ...
机器学习:第三篇 使用随机梯度下降法(SGD)求解方程
使用随机梯度下降法(SGD)求解一元三次方程的根。在知乎上看的。
求解分析
原题目是求解: a3+a2a^3+a^2a3+a2 这里为了方便于我们理解,我把方程简化成2元方程:a2=49a^2 = 49a2=49。使用随机梯度下降法求解方程。
我们可以把我们平时遇到的神经网络看成是一个函数 y=fθ(x)y=f_\theta(x)y=fθ(x),其中y是神经网络的输出,θ\thetaθ是神经网络的参数,而x是神经网络的输入。
我们就可以把题目看成是有一个神经网络,假定函数为 y=fθ(x)=θ2−49y=f_\theta(x)=\theta^2-49y=fθ(x)=θ2−49,要求的这样一个最佳的θ\thetaθ 使得无论输入x的任意值,使得y都逼近于0。
我们首先需要定义一个损失函数来对参数进行评估:cost(x)=fθ2(x)cost(x)=f_\theta^2(x)cost(x)=fθ2(x),当cost(x)的值越小,那么θ\thetaθ的表征预测值和准确值就越接近。
神经网络的目标就是求得一个θ\thetaθ使得上面的损失函数最小。
使用随机梯度下降法迭代求取θn\t ...
树莓派:第一篇 用树莓派点亮一个LED灯
树莓派已经完全脱离了一般的嵌入式单片机体系了,它对于嵌入式软件开发已经走在了一个非常高的高度了。用树莓派做嵌入式开发的好处在于你不需要关心硬件层面的东西,只要按照引脚接好,然后调用特定的函数就可以使用了。。。
Tips:本文用到的工具都可以在文章末尾的压缩包中找到。
前言
我把嵌入式开发分成硬件开发以及软件开发,STM32属于完全型的,既要懂得硬件原理,会操作寄存器,会通过使能特定的信号来实现对硬件不同状态的控制。也要能够对算法逻辑非常的清晰,中断处理,算法程序设计等等,还有各种稀奇古怪的知识,比如volatile,这个关键字基本上不会在软件开发中用到,但是在STM32中经常被提及,因为STM32的中断啥的特别多。
树莓派和Ardunio是可以属于那种纯粹的上层软件开发,你可以只关心代码怎么写,而不需要考虑我该怎么驱动他。当然,如果你找不到对应的库文件,你还是需要自己去驱动硬件的,就像小学期的一个超声波模块一样,死活找不到合适的树莓派的超声波模块,只能自己动手写一个驱动程序了。
还有一个是树莓派使用的语言是C或者Python,Python用的比较多,所以要学树莓派还需要一点Pytho ...