CNN经典算法——LeNet模型
LeNet模型介绍
LeNet网络基本架构为:conv1 (6) -> pool1 -> conv2 (16) -> pool2 -> fc3 (120) -> fc4 (84) -> fc5 (10) -> softmax,括号内数字表示channel数。
该网络包含五层,两个卷积(卷积层、池化层),两个全连接层,一个输出层。
其中卷积层的卷积核大小为5x5,stride=1;池化层为最大池化层,卷积核大小为2x2,strides=2;全连接层的输出个数分别为120, 84, 10.
LeNet模型复现参考:《动手学深度学习》Chapter5
12345import d2lzh as d2limport mxnet as mxfrom mxnet import autograd, gluon, init, ndfrom mxnet.gluon import loss as gloss, nnimport time
基于Sequntial类构造模型经历一次卷积层,其高和宽为(h-k+1)*(w-k+1);经历一次池化层,其宽和高减半;这个过 ...
《机器学习(李宏毅2020spring)》作业3:CNN
作业说明:CNN分类问题根据实物照片进行分类,照片的命名规则是“类别_编号.jpg”,类别也是用数字表示,共有11类,Bread, Dairy product, Dessert, Egg, Fried food, Meat, Noodles/Pasta, Rice, Seafood, Soup, and Vegetable/Fruit;其实具体类别是什么我们可以不用管,只需要训练的时候输入数据,输出类别即可。training 以及 validation 中的照片名名称格式為“类别_编号.jpg”,例如 3_100.jpg 即为类别 3 的照片(编号不重要)testing 中的照片名稱格式為 [编号].jpg数据集需要提前下载下来,解压即可,范例中是从谷歌云下载的,需要翻墙,比较麻烦参考:李宏毅机器学习第三次作业源码
导入需要的包cv2需要额外安装,直接输入命令pip install opencv-python即可完成
12345678910# Import需要的套件import osimport numpy as npimport cv2import torchimport torch ...
softmax回归模型
线性回归输出结果为连续值,而对于分类问题,需要输出离散值,而softmax可以有效解决这一问题。
softmax回归从零开始实现1234%matplotlib inlineimport d2lzh as d2lfrom mxnet import autograd, nd
读取数据集12batch_size = 256train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
初始化参数模型由于像素为28*28,因此输入为784,而输出为10个类别
123456789num_inputs = 784num_outputs = 10W = nd.random.normal(scale=0.01, shape=(num_inputs, num_outputs))b = nd.zeros(num_outputs)#梯度W.attach_grad()b.attach_grad()
softmax运算实现123#看一下三维矩阵的运算X = nd.array([[1, 2, 3], [4, 5, 6]])X.sum(axi ...
Linear Regression线性回归模型
线性回归的从零开始实现参考:《动手学深度学习》通过利用mxnet框架中的NDArray和autograd来实现一个线性回归的训练过程
导入所需要的包12345%matplotlib inlinefrom IPython import displayfrom matplotlib import pyplot as pltfrom mxnet import autograd, ndimport random
生成数据集我们设定有两个特征值x1, x2,回归模型真实值为y = 2x1 - 3.4x2 + 4.2其中w1 = 2, w2 = -3.4, b = 4.2加入一个随机噪声∈来生成标签label,即y = 2x1 - 3.4x2 + 4.2 + ∈∈符合均值为0,标准差为0.01的正态分布
123456789num_inputs = 2num_examples = 1000true_w = [2, -3.4]true_b = 4.2#随机生成特征值features = nd.random.normal(scale=1, shape=(num_examples, num_inputs ...
Recurrent Neural Network循环神经网络
RNN综述回顾
Why we need RNN?对于全连接网络,层与层之间是全连接的,但是每层之间的节点是无连接的,因此全连接网络只能够处理单独的输入(即输入之间没有关联),前一个输入和后一个输入时完全没有关系的,无法处理相互之间关联的数据。
例如,我们输入两句话
arrive BeiJing on November 2nd
leave BeiJing on November 2nd
上面这两句话后四个单词都是一样的,但是前两个单词决定了这两句话的含义是完全不同的,即前一个单词对当前单词的含义有很大的影响,而全连接网络无法分辨出这种不同,因此我们需要Neral Network具备记忆功能,即在输入下一个单词之前记住前一个单词。
根据上面我们可以知道RNN用来处理遗传相互依赖的数据流,其用途十分广泛,例如文章中的文字、语音里的音频、股票的价格走势……
The Structural of RNN
包括四个部分:输入层、隐藏层、循环层、输出层;
输入层经过权重求值之后,在隐藏层经过激活函数得到一个值,这个值进行权重求解之后到输出层的同时,也会保存到循环层存储起来,在下一次有输入的时候 ...
Convolutional Neural Network卷积神经网络
The whole CNN
CNN工作原理:输入一张图片,让他经历一系列卷积层、池化层和全连接层,最终得到输出,输出结果可以是图像内容的单独分类或者分类的概率。
整个CNN包括三个层次:输入层、卷积层、全连接层
输入层:输入图片;
卷积层:一个卷积层包括卷积和池化两个步骤,构成一个单元,一张图片经过卷积层之后将会得到一张新的图片;可以经过多次卷积处理;
全连接层:Fully Connected Feedforward network
卷积层
卷积神经网络是含有卷积层的神经网络。我们以二维为例,包含有高H和宽W两个维度,通常用来处理图像数据。
卷积核(滤波器filter)二维卷积层就是把二维输入数组与二维卷积核进行内积运算得到一个二维输出数组。
卷积核又称为过滤器filter,其大小取决于卷积核的高和宽,通常大小应该是奇数1、3、5、7……。我们以下面这个图作为展示:
将输入数组的深色区域(卷积核窗口)与卷积核进行内积得到一个输出数组的深色区域数字,即0×0+1×1+3×2+4×3=19,然后从左到右、从上到下依次移动卷积核窗口并求内积即可得到输出数组。其中输入数组的深色区域大小 ...
学习资源汇总
论文网站DBLP:计算机领域内对研究的成果以作者为核心的一个计算机类英文文献的继承数据库系统。
arXiv:(X 依希腊文的 χ 发音,读音如英语的 archive )是一个收集物理学、数学、计算机科学、生物学与数理经济学的论文预印本的网站,始于1991年8月14日。截至2008年10月,arXiv.org已收集超过50万篇预印本[2][3];至2014年底,藏量达到1百万篇。截至2016年10月,提交率已达每月超过10,000篇。
IEEE
LaTex在线编辑器:www.overleaf.com
《机器学习(李宏毅2020spring)》作业2:Classification
作业说明作业要求根据人们的个人资料,判断其年收入是否高于5000美元,典型的二元分类问题,通过logistic regression与generative model实现
数据集说明X_train、Y_train和X_test是经过处理的数据集,可以直接使用,其他两个train.csv和test.csv为了提供额外信息
参考https://www.cnblogs.com/HL-space/p/10785225.htmlhttps://mrsuncodes.github.io/2020/03/19/%E6%9D%8E%E5%AE%8F%E6%AF%85%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E7%AC%AC%E4%BA%8C%E8%AF%BE%E4%BD%9C%E4%B8%9A/
李宏毅老师提供的源代码
数据预处理对每个属性做归一化,处理后将其分为训练集与测试集
https://blog.csdn.net/pipisorry/article/details/52247379这篇文章对数据的归一化处理做了讲解,可以去这里看看,集中归一化方法都用到了
12 ...
《机器学习(李宏毅2020spring)》作业1:Regression
作业要求、参考文献作业要求根据前9个小时的18个features(包含PM2.5)预测第十个小时的PM2.5
参考http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML20.html基本是按照参考代码来的,加入了一些注释更方便理解
另外所有的print都可以去掉,加上只是为了检验是否输出正确的数据
加载训练集数据train.csv 的資料為 12 個月中,每個月取 20 天,每天 24 小時的資料(每小時資料有 18 個 features)。
12345import sysimport pandas as pdimport numpy as npdata = pd.read_csv('./hw1_train.csv', encoding = 'big5')
处理数据取出需要的数值部分,即从第四列开始取数据把输出的数据与train.csv对比即可发现不同
123data = data.iloc[:, 3:]data[data == 'NR'] = 0raw_data = data.to_n ...