【TensorFlow-windows】(一)实现Softmax Regression进行手写数字识别(mnist)
博文主要内容有:
1.softmax regression的TensorFlow实现代码(教科书级的代码注释)
2.该实现中的函数总结
平台:
1.windows 10 64位
2.Anaconda3-4.2.0-Windows-x86_64.exe (当时TF还不支持python3.6,又懒得在高版本的anaconda下配置多个python环境,于是装了一个3-4.2.0(默认装python3.5),建议装anaconda3的最新版本,TF1.2.0版本已经支持python3.6!)
3.TensorFlow1.1.0
先贴代码,函数
# -*- coding: utf-8 -*-
"""
Created on Mon Jun 12 16:36:43 2017@author: ASUS
"""
#import itchat
#from PIL import Image
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets('MNIST_data/', one_hot = True) # 是一个tensorflow内部的变量
print(mnist.train.images.shape, mnist.train.labels.shape) # 训练集形状, 标签形状sess = tf.InteractiveSession() # sess被注册为默认的session
x = tf.placeholder(tf.float32, [None, 784]) # Placeholder是输入数据的地方#-------------给weights和bias创建Variable对象-------------
# Variable是用来存储模型参数,与存储数据的tensor不同,tensor一旦使用掉就消失
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
# 计算 softmax 输出 y 其中x形状是[None, 784],None是为batch数而准备的
y = tf.nn.softmax(tf.matmul(x, W) + b)#-------------交叉熵损失函数-------------
# y_存放真实标签
y_ = tf.placeholder(tf.float32, [None, 10])
# recude_mean和reduce_sum意思缩减维度的均值,以及缩减维度的求和
# reduce_mean在这里是对一个batch进行求均值
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices = [1])) #-------------优化算法设置-------------
# 采用梯度下降的优化方法,
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)#---------------全局参数初始化-------------------
tf.global_variables_initializer().run()#---------------迭代地执行训练操作-------------------
for i in range(1000):batch_xs, batch_ys = mnist.train.next_batch(100)train_step.run({x: batch_xs, y_: batch_ys})#---------------准确率验证-------------------
# tf.argmax是寻找tensor中值最大的元素的序号 ,在此用来判断类别
# tf.equal是判断两个变量是否相等, 返回的是bool值
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_, 1))
# tf.cast用于数据类型转换
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(accuracy)
print(accuracy.eval({x:mnist.test.images, y_: mnist.test.labels}))
其中用到的函数总结:
1. sess = tf.InteractiveSession() 将sess注册为默认的session
2. tf.placeholder() , Placeholder是输入数据的地方,也称为占位符,通俗的理解就是给输入数据(此例中的图片x)和真实标签(y_)提供一个入口,或者是存放地。(个人理解,可能不太正确,后期对TF有深入认识的话再回来改~~)
3. tf.Variable() Variable是用来存储模型参数,与存储数据的tensor不同,tensor一旦使用掉就消失
4. tf.matmul() 矩阵相乘函数
5. tf.reduce_mean 和tf.reduce_sum 是缩减维度的计算均值,以及缩减维度的求和
6. tf.argmax() 是寻找tensor中值最大的元素的序号 ,此例中用来判断类别
7. tf.cast() 用于数据类型转换
(ps: 可将每篇博文最后的函数总结复制到一个word文档,便于日后查找)
【TensorFlow-windows】(一)实现Softmax Regression进行手写数字识别(mnist)相关推荐
- GAN变种ACGAN利用手写数字识别mnist生成手写数字
1.摘要 本文主要讲解:GAN变种ACGAN利用手写数字识别mnist数据集进行训练,最终生成手写数字图片 主要思路: Initialize generator and discriminator I ...
- Pytorch实战1:LeNet手写数字识别 (MNIST数据集)
版权说明:此文章为本人原创内容,转载请注明出处,谢谢合作! Pytorch实战1:LeNet手写数字识别 (MNIST数据集) 实验环境: Pytorch 0.4.0 torchvision 0.2. ...
- TensorFlow 2.0 快速上手教程与手写数字识别例子讲解
文章目录 TensorFlow 基础 自动求导机制 参数优化 TensorFlow 模型建立.训练与评估 通用模型的类结构 多层感知机手写数字识别 Keras Pipeline * TensorFlo ...
- 小生不才:tensorflow实战01-基于bp神经网络的手写数字识别
前言 利用搭建网络八股,使用简单的bp神经网络完成手写数字的识别. 搭建过程 导入相应的包 获取数据集,划分数据集和测试集并进行简单处理(归一化等) 对数据进行乱序处理 定义网络结构 选择网络优化器以 ...
- Keras搭建CNN(手写数字识别Mnist)
MNIST数据集是手写数字识别通用的数据集,其中的数据是以二进制的形式保存的,每个数字是由28*28的矩阵表示的. 我们使用卷积神经网络对这些手写数字进行识别,步骤大致为: 导入库和模块 我们导入Se ...
- Python 手写数字识别 MNIST数据集下载失败
目录 一.MNIST数据集下载失败 1 失败的解决办法(经验教训): 2 亲测有效的解决方法: 一.MNIST数据集下载失败 场景复现:想要pytorch+MINIST数据集来实现手写数字识别,首先就 ...
- tensorflow实现手写数字识别(MNIST)
手写数字图片数字集 机器学习需要从数据中间学习,因此首先需要采集大量的真实样本数据.以手写的数字图片识别为例,我们需要收集大量的由真人书写的0-9的数字图片,为了便于存储和计算,一般把收集 ...
- keras库的安装及使用,以全连接层和手写数字识别MNIST为例
1.什么是keras 什么是keras? keras以TensorFlow和Theano作为后端封装,是一个专门用于深度学习的python模块. 包含了全连接层,卷积层,池化层,循环层,嵌入层等等等, ...
- 使用Pytorch实现手写数字识别(Mnist数据集)
目标 知道如何使用Pytorch完成神经网络的构建 知道Pytorch中激活函数的使用方法 知道Pytorch中torchvision.transforms中常见图形处理函数的使用 知道如何训练模型和 ...
最新文章
- PostgreSQL从继承到分区(三)
- Metasploit新增技巧提示功能
- 《C与指针》第七章练习
- 使用VS2015远程GDB调试
- Kafka解惑之时间轮(TimingWheel)
- icpc西部区域赛_信息学子在ACMICPC 2020中国(西部)大学生程序设计竞赛中喜获佳绩...
- android水印添加水印,android 增加背景文字 水印效果(仿钉钉)
- Retrofit请求数据对错误以及网络异常的处理
- SQL结构化查询语言分类介绍
- 探讨专线与家用宽带的区别
- 经典排序算法(十三)--奇偶排序Odd-even Sort
- Selective Search for Object Recoginition(转)
- 20191004每日一句
- JAVA基础编程——简介
- inode客户端连接成功上不了网_Inode客户端上网常见问题及解决办法
- CDA LEVELⅠ2021最新模拟题一(全网最详细有答案)
- php图书借阅管理系统前台,php图书馆图书借阅管理系统
- 施一公:如何成为一名优秀的博士生?
- mysql update无效_Mysql update记录无效如何解决
- Facebook 全面禁止口罩广告,各平台如何打击哄抬、售假
热门文章
- python之import子目录文件
- C/C++ Socket编程Http下载的简单实现
- 《那些年啊,那些事——一个程序员的奋斗史》——122
- Windows phone7 动态添加控件
- mysql使用文件排序_Mysql排序FileSort的问题
- 全局变量求平均分最高分最低分_打分函数trimmean,去掉最高最低分求平均分,用它就对了...
- 深入css布局 (3)完结 — margin问题与格式化上下文
- what's the python之函数及装饰器
- cocos2dx对于强大的RichText控制
- Manjaro_xfce 安装后配置