Tensorflow学习笔记:基础(01)-Mnist手写集最原始版

第T1周:实现mnist手写数字识别 通过下面的网络结构我们可以简单理解为:输入一张图片,将会得到一组数,这组代表这张图片上的数字为0~9中每一个数字的几率(并非概率),out数字越大可能性越大,仅此而已。MNIST手写数字数据集中包含了70000张图片,其中60000张为训练数据,10000为测试数据,70000张图片均是。的张量,第一个维度表示图片的索引,第二个维度表示每张图片中的像素点。首先选择模型——其次构建网络层——编译函数——训练模型(使用预处理后的数据)——进行预测。如果我们把每一张图片中的像素转换为向量,则得到长度为。 阅读详情

# 本篇主要用来认识Tensorflow实现神经网络的一般流程,最简单最原始的实现方法,不关注具体提升错误率技巧。

## Mnist数据集是![Yann LeCun](http://yann.lecun.com/exdb/mnist/)所提供的一个手写数据集。

 

## 安装数据集

可以下载到本地,也可以用Google的![Colaboratory](https://colab.research.google.com),Colaboratory 是免费的 Jupyter 笔记本环境,不需要进行任何设置就可以使用,并且完全在云端运行。推荐使用它,记得搭梯子。

两行代码安装:

import  tensorflow.examples.tutorials.mnist.input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

这个数据集中,总共有6w行训练数据集,1w行测试数据集,每张图片都是28*28的像素点矩阵。把这个二维矩阵展开成一维向量,长度是28*28=784.

在MNIST训练数据集里,训练集图片(mnist.train.images)是一个形状为[60000,784]的张量,第一个维度数字用来索引图片,第二个维度数字用来索引每张图片中的像素点。在此张量里的每一个元素,都表示某张图片里的某个像素的强度值,值介于0和1之间。 

## 分类器使用softmax,具体原理见。。。

然后来实现一个最简单的两层全连接网络来完成MNIST数据的分类问题,输入层784个神经元,对应每张图片784个像素点;输出层十个神经元,对应0-9这10个数字,实现分类。

 

## 计算流程

1. 数据准备

2. 准备好placeholder

3. 初始化参数/权重

4. 计算预测结果

5. 计算损失值

6. 初始化优化器optimizer

7. 指定迭代次数,在session执行graph

 

## 代码

1. 准备数据

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

# 载入数据集
mnist = input_data.read_data_sets("MNIST_data", one_hot=True)

# 每个批次送100张图片
batch_size = 100
# 计算一共有多少个批次
n_batch = mnist.train.num_examples / batch_size

2. 准备好placeholder

x = tf.placeholder(tf.float32, [None, 784])
y = tf.placeholder(tf.float32, [None, 10])

3. 初始化参数、权重

W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

4. 计算预测结果

prediction = tf.nn.softmax(tf.matmul(x, W) + b)

5. 计算损失值

loss = tf.reduce_mean(tf.square(y - prediction))

6. 初始化优化器optimizer

learning_rate = 0.2
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)

# 计算结果存在boolean list,argmax()函数返回一维张量中最大值所在的位置
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(prediction, 1))

# 计算准确率
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

7. 指定迭代次数

n_sample = xs.shape[0]
init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for epoch in range(21):
        for batch in range(n_batch):
            batch_xs, batch_ys = mnist.train.next_batch(batch_size)
            sess.run(optimizer, feed_dict={x: batch_xs, y:batch_ys})
        
        acc = sess.run(accuracy, feed_dict={x:mnist.test.images, y:mnist.test.label})
        if epoch % 2 == 0:
            print('Iter ' + str(epoch) + ',Testing Accuracy ' + str(acc))

一些可以优化的方向:

1. 增加神经网络层数,添加隐层;

2. 将二次代价函数修改成交叉熵函数呢?

3. 尝试多选几个梯度下降优化器呢?

(学习笔记01)MNIST手写数字的识别(tensorflow + CPU) MNIST手写数字的识别 本节将学习机器学习的分类开发应用,即MNIST手写数字的识别。对此,我们通过建立一个两层神经网络的模型来用于预测图片里面的数字。 MNIST数据集介绍 MNIST是一个非常有名的手写体数字识别数据集,由60000个训练样本和10000个测试样本组成,每个样本都是一张28像素 × 28像素的灰度图像(1通道),各个像素的取值在0到255之间。每个图像数据都相应地标有“1”“2”“3”等标签,如下图所示。 更多MNIST数据集的详细介绍可参考:MNIST数据集介绍 下载数据集: M 阅读详情

相关推荐

Tensorflow初探之MNIST数据集学习

官方文档传送门MNIST数据集是手写数字0~9的数据集,一般被用作机器学习领域的测试,相当于HelloWorld级别。本程序先从网上导入数据,再利用最小梯度法进行训练使得样本交叉熵最小,最后给出训练之后程序的准确率。交叉熵的定义:y 是我们预测的概率分布, y' 是实际的分布。该指标用来衡量学习结果与实际情况的差距。import tensorflow.examples.tutorials.mnis...

J. Cole 2万+

tensorflow笔记及代码

在mooc上看到一个很好的tensorflow教程,因此想把笔记及代码链接记录下来,课程链接为: https://www.icourse163.org/learn/PKU-1002536002#/learn/content 课程笔记文档链接: https://download.youkuaiyun.com/download/vmxhc1314/10548913 每一章的代码链接: 1.python的...

vmxhc1314的博客 2449

Tensorflow解决MNIST手写数字分类问题

一、参考 官网:https://www.tensorflow.org/tutorials/layers 二、GitHub源码分享 https://github.com/jxq0816/tensorflow-mnist 代码组织结构 三、MNIST数据集 1、input_data.py 该文件由谷歌提供,用于下载MNIST相关数据集,需要VPN才可以访问 地址:https:/...

1231

Tensorflow-数据集简单分类(使用MNIST数据集)

一、数据集分类原理      数据集中每一张图片包含28*28个像素,我们把这一个数组展开成一个向量,长度是28*28=784。第一个维度数字用 来索引图片,第二个维度数字用来索引每张图片中的像素点。图片里的某个像素的强度值介于0-1 之间。MNIST数据集的标签是介于0-9的数字,我们要把标签转化为“one-hot vectors”。一个onehot向量除了某一位数字是1以外,其余维度数字都是0...

ai_XZP_master 5016

北京大学-曹建-人工智能实践TensorFlow课件和代码)

北京大学-曹建-人工智能实践TensorFlow课件和代码),代码测试通过

手把手教你用Microsoft AEC Challenge数据集训练自己的回声消除模型(附完整代码)

本文详细介绍了如何使用Microsoft AEC Challenge数据集训练专业的回声消除模型,包括环境准备、数据清洗、模型架构设计、训练流程和实际部署注意事项。通过完整的代码示例和实战指南,帮助开发者快速掌握AEC技术,提升语音通信系统的回声消除效果。

weixin_27697385的博客 454

曹建老师Tensorflow笔记——神经网络搭建八股

def forward(x, regularizer): ''' 前向传播就是搭建网络,设计网络结构 forward.py forward() get_weight() get_bias() ''' w = b = y = return y ...

HelpMeMoon 997

feko金属球远场RCS双站

feko金属球远场RCS双站

a264672的博客 6910

Tensorflow笔记__实现断点续训功能

内容源于曹建老师的tensorflow笔记课程源码链接 : https://github.com/cj0012/AI-Practice-Tensorflow-Notes在反向传播算法中,训练代码如下:saver = tf.train.Saver() with tf.Session() as sess: init_op = tf.global_variables_initializer() ...

Pichairen 7991

VMware桥接模式实战:用手机热点给Linux虚拟机共享网络(附WiFi适配技巧)

本文详细介绍了在移动办公场景下,如何为VMware中的Linux虚拟机配置桥接模式,以通过手机热点共享网络。文章深入解析了桥接模式在无线环境下的工作原理,提供了从主机端准备、VMware设置到Linux虚拟机内部配置的完整实战步骤,并针对手机热点的特殊性,分享了MTU优化、DNS配置及常见网络问题的诊断与解决方案,帮助用户实现稳定高效的移动虚拟化办公。

2y3u4i5o6p的博客 1194

uniapp - [微信小程序] 实现点击预览各种文件 pdf文档、视频mp4、mp3音乐、图片图像、word/excel/ppt 等,uniapp小程序文件预览功能(详细示例代码,一键复制开箱即用)

uniapp,uniapp微信小程序,支付宝小程序平台端,uniapp实现文件在线预览,uniapp微信小程序怎么实现预览视频mp4,mp3音乐,图片,office文档,小程序平台如何在线预览word/excel/ppt文档,uniapp实现小程序端的文件查看功能,uniapp小程序端实现pdf文件预览,uniapp纯前端预览PDF、DOC、DOCX、图片、视频,uni-app文档、图片预览查看,uniapp文档预览功能,uniapp小程序端文件预览,uniapp小程序平台纯前端解析word,pdf,xls

✅ 精选推荐文章 1万+

tensorflow入门:实现MNIST手写数字识别

最近开始入门学习TensorFlow,选择了机器学习最经典的mnIST,实现手写数字识别作为入门项目。采用了softmax回归和CNN两种方式。项目在google colab上完成。 加载MNIST数据集 TensorFlow提供了一份python源代码用于自动下载和安装这个数据集。使用tensorflow.examples.tutorials.mnist 里自带的input_data.py。 i...

xun__Meng的博客 2056

康复训练监测系统:基于YOLOv8的患者动作规范识别

本文系统介绍了基于YOLOv8的康复训练动作规范识别系统,从理论背景、数据准备、模型训练、推理应用到UI界面,提供了完整技术链条及代码示范。希望对康复领域的智能监测应用提供参考和借鉴。

YOLO 453

CNN实现MNIST手写数字识别(C语言和tensorflow分别实现)

为了实践一下CNN运作的内部原理,加深算法的理解,从头开始写了遍CNN。因为刚开始学MATLAB还不太会用,所以拿C写的。写的有点难受,毕竟卷积等运算都得自己手写,所以只是实现了一个结构非常简单的CNN。等有时间了肯定好好学MATLAB~~~ 网络框架: 为了方便起见只设置了一层卷积层。原始数据集的图片大小为28*28*1,一轮卷积操作与5个滤波器卷积,步长设置为1,得到24*24*5的卷...

yxh的博客 1万+

【施磊】C++课程笔记目录

【C++编程】施磊老师C++笔记目录

GeniusAng的博客 4122

基于STM32设计的数字电子秤

当前项目是采用采用STM32+称重模块+OLED实现了简单的电子秤项目,称重模块上采用24位的ADC芯片,精度较高。实现了称重,校准、去皮等功能。

1万+

python 简单使用MNIST数据集实现手写数字识别

一、了解MNIST数据集 import tensorflow as tf import tensorflow.examples.tutorials.mnist.input_data as input_data import matplotlib.pyplot as plt import numpy as np #0 读取mnist数据集 mnist = input_data.read_dat...

做减求空 1万+

【OD统一考试(C卷)考生抽中题】符号运算(200 分),用 C++ 编码,速通

3. 结果为整数或分数, 分数必须化为最简格式(比如 6, 3/4, 7/8, 90/7)参加华为 od 机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。字符串格式的表达式,仅支持±*/,数字可能超过两位,可能带有空格,没有负数。4. 除数可能为 0,如果遇到这种情况,直接输出"ERROR"1. 所有的输入数字皆为正整数(包括 0)用例的输入一定合法, 不会出现括号不匹配的情况。结果可能是负数, 负号放在最前面。表达式结果,以最简格式表达。长度小于 200 个字符。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1764

tensorflow 处理mnist手写体数据集(训练+预测代码)

一,tensorflow提供了自动下载mnist数据集的接口,若下载不了,请尝试翻墙后再试,或者从其他网站下载。 二,训练代码: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data import numpy as np import os """---------------...

ZJE 5288

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Tensorflow入门之MNIST手写数字识别实战教程

学习一门编程语言时,入门的第一件事几乎都是打印“Hello World”。MNIST手写数字识别就像是机器学习领域里的Hello World。通过Tensorflow实现MNIST手写数字识别将让我们快速地入门机器学习以及了解Tensorflow的使用。 文章目录数据集介绍导入模块和数据集项目代码参考资料 数据集介绍 导入模块和数据集 项目代码 GitHub地址: 参考资料 http://www....

WellTung_666的博客 1355

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

使用tensorflow进行Mnist手写数字的识别

Mnist手写数字的识别 一.要求 使用一种深度学习框架,如tensorflow完成Mnist手写数字的识别 二.Mnist手写数字介绍 简介 MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片: 它也包含每一张图片对应的标签,告诉我们这个是数字几。比如,上面这四张图片的标签分别是5,0,4,1,我们将训练一个机器学习模型用于预测图片里面的数字。 数据集的下载 数据集可以在官网Ya...

lucklydog123的博客 1477

【TensorFlow】MNIST手写数字识别

MNIST  MNIST是一个非常简单的机器视觉数据集。如图,它由几万字28像素×28像素的手写数字组成,这些图片只包含灰度值信息。我们的任务是对这些手写数字的图片进行分类,转成0~9一共10类。

笔尖的博客 3530

深度学习笔记01-CNN实现mnist手写数字识别(Tensorflow)

神经网络通常使用梯度下降法来进行优化,而数据的取值范围会影响梯度的更新速度。如果数据的数值差异较大,某些特征的梯度可能会非常大,而其他特征的梯度则会非常小,这可能导致梯度下降不平衡,进而使模型收敛变慢。通过归一化,将数据缩放到相似的范围(通常是0到1或-1到1之间),可以让模型的各层权重更新更稳定,梯度下降也会更加有效。

boooo_hhh的博客 1074

Tensorflow学习笔记:基础篇(6)——Mnist手写集改进版(Optimizer与Tensorboard)

Tensorflow学习笔记(6)——Mnist手写集改进版(Optimizer优化器与Tensorboard) 前序 — 前文中,我们将三层全连接神经网络的方差代价函数(二次代价函数)替换成交叉熵函数来完成MNIST数据的分类问题,最终迭代计算20次,准确率接近0.97,离我们预期的0.98甚至0.99依旧有差距。 — 本文我们在此基础上继续修改,主要有两个目标: (1)选用合适...

Laurenitum0716的博客 1698

mnist手写数字识别python_tensorflow实现MNIST手写数字识别

MNIST数据集是由0-9,10个手写数字组成。训练图像有60000张,测试图像有10000张。1、在tensorflow中可以使用python下载数据集,调用download.py。代码如下:from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("MNIST_data...

weixin_39595537的博客 1037

Pycharm+tensorflow+Softmax实现Mnist手写体数字识别

Pycharm+Tensorflow的配置和安装在前面的博客已经介绍过。 Minst数据集可以再这里下载:Minst数据集下载 MNIST数据集包含了6w张图片作为训练数据,1w图片作为测试数据。在MNIST数据集中,每一张图片都代表了0~9中的一个数字,图片的大小都是28×28,且数字都会出现在图片的正中间。数据集包含了四个文件: t10k-images-idx3-ubyte.gz ...

AIGC Studio:分享AIGC前沿知识和好玩应用,公众号同名。 2889
上一篇: 【转载自知乎】如何在Jupyter Notebook中使用Python虚拟环境?
下一篇: ubuntu16.0.4 pycharm 中,如何配置
慕广陵
博客等级 码龄17年 3粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值