mnist

Pytorch:实现CNN手写数字识别

邮差的信 提交于 2020-02-21 12:41:43
原文地址 分类目录——Pytorch 直接上程序,通过注释说明 import torch import torch . nn as nn import torch . utils . data as Data import torchvision # 数据库模块 import os import time torch . manual_seed ( 1 ) # 为pytorch中的随机操作设置一个随机种子,使得每次随机的结果都一样 # 一些超参数(全局参数) EPOCH = 2 # 训练整批数据多少次, 为了节约时间, 我们只训练一次 BATCH_SIZE = 50 # 小批量梯度下降的梯度规格,每次拿一个batch的数据来训练,来优化一波参数 LR = 0.001 # 学习率 if os . path . exists ( './mnist/' ) : # 如果已经存在(下载)了就不用下载了 DOWNLOAD_MNIST = False else : DOWNLOAD_MNIST = True # Mnist 手写数字 train_data = torchvision . datasets . MNIST ( root = './mnist/' , # 保存或者提取位置 train = True , # this is training data transform =

Tensorflow学习实战之mnist手写体识别

三世轮回 提交于 2020-02-19 07:10:32
Tensorflow学习实战之mnist手写体识别 数据准备 构建模型 训练模型 评估结果 可视化显示 Tensorflow继续学习,今天是入门级的mnist手写体识别,改变前两次的线性回归,这次是逻辑回归,这样随之改变的是损失函数等 Tensorflow里面有一个examples的MNIST的手写,直接运行会自动下载。 训练了20次,效果还不错,慢慢的理解,把以前不懂得好多东西,学习中慢慢得到补充 收获: reshape,行优先,逐行排列,相当于把一整行数字排列后按reshape得行列填充进去,我的理解相当于图像里得resize one hot独热编码,一个为1,其余所有为0,适用于分类任务,是一种稀疏向量,扩展到欧氏空间更适用于分类任务,使用one-hot得优势很明显,1-3和8-3,更相似于3,如果不使用one-hot而直接使用1-9编码,1-3更加相似,不符合 通过argmax可以把独热编码中得最大值取出来,即把标签得出 训练-》验证,验证通过后,到最后用测试集进行测试 Sigmod函数更适应于逻辑回归 Softmax函数可以延伸至多分类,但多分类相加为1 损失函数使用的是交叉熵,相当于两个概率分布之间的距离 先上图结果图: 数据准备 import tensorflow as tf import matplotlib . pyplot as plt import numpy

mnist手写体识别

拜拜、爱过 提交于 2020-02-17 14:36:50
MNIST数据集是NIST的子集,包含了60000张图片为训练数据,10000张作为测试数据,其中包含了训练数据与测试数据的图片及答案,每项图片的大小为28×28,数字都出现在图片的正中间。 而TensorFlow提供了一个类处理MNIST,将图片解析成需要的格式: from tensorflow . examples . tutorials . mnist import input_data # 载入数据集 mnist = input_data . read_data_sets ( "E:/minst" , one_hot = True ) print ( "training datasize:" , mnist . train . num_examples ) print ( "validating data size:" , mnist . validation . num_examples ) print ( "testing data size:" , mnist . test . num_examples ) print ( "Example training data: " , mnist . train . images [ 0 ] ) print ( "Example training data label: " , mnist . train . labels

【PyTorch学习笔记】MNIST手写数字识别之MLP实现

怎甘沉沦 提交于 2020-02-16 19:42:30
在本笔记中,我们将以多层感知机(multilayer perceptron,MLP)为例,介绍多层神经网络的相关概念,并将其运用到最基础的MNIST数据集分类任务中,同时展示相关代码。本笔记主要从下面四个方面展开: 文章目录 1 多层感知机(MLP)理论知识 1.1 隐藏层 1.2 激活函数 1.3 多层感知机 1.4 交叉熵(cross entropy)损失函数 2. MNIST数据集简介 3. 代码详解及结果展示 4. 心得体会 1 多层感知机(MLP)理论知识 1.1 隐藏层 多层感知机在单层神经网络的基础上引入了一到多个隐藏层(hidden layer)。隐藏层位于输入层和输出层之间。下图展示了一个多层感知机的神经网络图,它含有一个隐藏层,该层中有5个隐藏单元。 在上图所示的多层感知机中,输入和输出个数分别为4和3,中间的隐藏层中包含了5个 隐藏单元 (hidden unit)。由于输入层不涉及计算,上图中的多层感知机的层数为2。由上图可见,隐藏层中的神经元和输入层中各个输入完全连接,输出层中的神经元和隐藏层中的各个神经元也完全连接。因此,多层感知机中的隐藏层和输出层都是全连接层。 具体来说,给定一个小批量样本 X ∈ R n × d \boldsymbol{X} \in \mathbb{R}^{n \times d} X ∈ R n × d ,其批量大小为 n n n

softmax pytorch从零实现的代码

两盒软妹~` 提交于 2020-02-16 14:24:10
获取Fashion-MNIST训练集和读取数据 在介绍softmax回归的实现前我们先引入一个多类图像分类数据集。它将在后面的章节中被多次使用,以方便我们观察比较算法之间在模型精度和计算效率上的区别。图像分类数据集中最常用的是手写数字识别数据集MNIST[1]。但大部分模型在MNIST上的分类精度都超过了95%。为了更直观地观察算法之间的差异,我们将使用一个图像内容更加复杂的数据集Fashion-MNIST[2]。 我这里我们会使用torchvision包,它是服务于PyTorch深度学习框架的,主要用来构建计算机视觉模型。torchvision主要由以下几部分构成: torchvision.datasets: 一些加载数据的函数及常用的数据集接口; torchvision.models: 包含常用的模型结构(含预训练模型),例如AlexNet、VGG、ResNet等; torchvision.transforms: 常用的图片变换,例如裁剪、旋转等; torchvision.utils: 其他的一些有用的方法。 # import needed package % matplotlib inline from IPython import display import matplotlib . pyplot as plt import torch import

《动手学深度学习》Day2:Softmax与分类模型

爱⌒轻易说出口 提交于 2020-02-16 10:08:15
文章目录 一、softmax的基本概念 二、交叉熵损失函数 三、模型训练和预测 四、获取Fashion-MNIST训练集和读取数据 五、softmax的Pytorch简实现 5.1初始化参数和获取数据 5.2 定义网络模型 5.3 初始化模型参数 5.4 定义损失函数 5.5 定义优化函数 5.6 训练 一、softmax的基本概念 1.分类问题 一个简单的图像分类问题,输入图像的高和宽均为2像素,色彩为灰度。 图像中的4像素分别记为 x 1 , x 2 , x 3 , x 4 x_1,x_2,x_3,x_4 x 1 ​ , x 2 ​ , x 3 ​ , x 4 ​ 。 假设真实标签为狗、猫或者鸡,这些标签对应的离散值为 y 1 , y 2 , y 3 y_1,y_2,y_3 y 1 ​ , y 2 ​ , y 3 ​ 。 我们通常使用离散的数值来表示类别,例如 y 1 = 1 , y 2 = 2 , y 3 = 3 y_1=1,y_2=2,y_3=3 y 1 ​ = 1 , y 2 ​ = 2 , y 3 ​ = 3 。 2.权重矢量 3.神经网络图 下图用神经网络图描绘了上面的计算。softmax回归同线性回归一样,也是一个单层神经网络。由于每个输出 o 1 , o 2 , o 3 o_1,o_2,o_3 o 1 ​ , o 2 ​ , o 3 ​ 的计算都要依赖于所有的输入

Python 实现深度学习

社会主义新天地 提交于 2020-02-15 23:54:11
前言 最近由于疫情被困在家,于是准备每天看点专业知识,准备写成博客,不定期发布。 博客大概会写5~7篇, 主要是“解剖”一些深度学习的底层技术 。关于深度学习,计算机专业的人多少都会了解,知道Conv\Pool的过程,也看过论文,做过实验或是解决方案。在写的各种卷积网路 时候,有没有问问自己:这些网络到底是怎么“运作”起来的?如果自己要实现一个具备基本功能的神经网络应该怎么去实现? 知道事物的表面现象,不知事物的本质及其产生的原因 是一件很可悲的事情,正如鲁迅所说:What I cannot create, I do not understand. 只有亲自实践去创造一个东西,才算真正弄懂一个问题。 本着“知其然,知其所以然”的目的,会尽可能的用Python库和基本的数学知识,创建经典的深度学习网络。 每篇的计划如下: 第一篇 介绍numpy库和matplotlib库、读写二进制的方法、pkl等 。这些知识会在后面用到,在本篇的最后会以mnist数据集为例,创建处理手写体图片的函数,供后使用。 第二篇 介绍感知机 。用感知机实现逻辑门、用多层感知机实现复杂逻辑门。 第三篇 神经网络的设计与实现 。分为上下两部分: 3.1篇 增加神经网络的forward 。实现激活函数、全连接层的计算、输出层。最后用mnist数据集测试forwarld是否正确; 3.2篇

softmax-pytorch

白昼怎懂夜的黑 提交于 2020-02-15 12:43:28
softmax和分类模型 内容包含: softmax回归的基本概念 如何获取Fashion-MNIST数据集和读取数据 softmax回归模型的从零开始实现,实现一个对Fashion-MNIST训练集中的图像数据进行分类的模型 使用pytorch重新实现softmax回归模型 softmax的基本概念 分类问题 一个简单的图像分类问题,输入图像的高和宽均为2像素,色彩为灰度。 图像中的4像素分别记为 x 1 , x 2 , x 3 , x 4 x_1, x_2, x_3, x_4 x 1 ​ , x 2 ​ , x 3 ​ , x 4 ​ 。 假设真实标签为狗、猫或者鸡,这些标签对应的离散值为 y 1 , y 2 , y 3 y_1, y_2, y_3 y 1 ​ , y 2 ​ , y 3 ​ 。 我们通常使用离散的数值来表示类别,例如 y 1 = 1 , y 2 = 2 , y 3 = 3 y_1=1, y_2=2, y_3=3 y 1 ​ = 1 , y 2 ​ = 2 , y 3 ​ = 3 。 权重矢量 o 1 = x 1 w 11 + x 2 w 21 + x 3 w 31 + x 4 w 41 + b 1 \begin{aligned} o_1 &= x_1 w_{11} + x_2 w_{21} + x_3 w_{31} + x_4 w_{41} + b_1

Deep_Learning_Task1: Linear_Regression/Softmax/MLP

♀尐吖头ヾ 提交于 2020-02-15 08:37:07
一 、Linear_Regression 1_线性回归的基本要素 模型 (model) 数据集 (data set):训练数据集(training data set) and 训练集(training set) 损失函数 (price function):用来衡量损失值和真实值的误差,数值越小代表误差越小 优化函数_随机梯度下降 (optimical function_random gradient descent) 在模型和损失函数形式较为简单时,上面的误差最小化问题的解可以直接被公式表达出来,这类解叫做解析解(analytical solution) 大多数深度学习的模型并没有解析解,只能通过优化算法有限次迭代模型参数来尽可能降低损失函数的值,这类解叫做数值解(numerical solution) 小批量随机梯度下降(mini-batch stochastic gradient descent)—— 求解数值解的优化算法: step1:选取一组模型参数的初始值 step2:对参数进行多次迭代,使每次迭代都降低损失函数的值 step3:在每次迭代的过程中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量 step4:求小批量中数据样本的平均损失有关模型参数的导数(梯度descent) step5:用此结果与预先设定的一个正数的乘机作为模型参数在本次迭代的减小量

MNIST手写数字分类simple版(03-2)

北战南征 提交于 2020-02-15 01:52:54
simple版本nn模型 训练手写数字处理 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #载入数据集 mnist=input_data.read_data_sets("MNIST_data", one_hot=True) #每个批次的大小 batch_size=100 #计算一共有多少批次 n_batch=mnist.train.num_examples // batch_size #定义两个placeholder x=tf.placeholder(tf.float32,[None,784]) y=tf.placeholder(tf.float32,[None,10]) #创建一个简单的神经网络 W=tf.Variable(tf.zeros([784,10])) b=tf.Variable(tf.zeros([1,10])) prediction=tf.nn.softmax(tf.matmul(x,W)+b) #二次代价函数 loss=tf.reduce_mean(tf.square(y-prediction)) #使用剃度下降法 train_step=tf.train.GradientDescentOptimizer(0.2).minimize(loss)