可和这篇文章对比:https://blog.csdn.net/fanzonghao/article/details/81603367

# coding: utf-8
# ## MNIST数据集from __future__ import division, print_function, absolute_importimport tensorflow as tf# Import MNIST data,MNIST数据集导入
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)# In[2]:# Hyper-parameters,超参数
learning_rate = 0.001
num_steps = 500
batch_size = 128
display_step = 10# Network Parameters,网络参数
num_input = 784 # MNIST数据输入 (img shape: 28*28)
num_classes = 10 # MNIST所有类别 (0-9 digits)
dropout = 0.75 # Dropout, probability to keep units,保留神经元相应的概率# tf Graph input,TensorFlow图结构输入
X = tf.placeholder(tf.float32, [None, num_input])
Y = tf.placeholder(tf.float32, [None, num_classes])
keep_prob = tf.placeholder(tf.float32) # dropout (keep probability),保留i# In[3]:# Create some wrappers for simplicity,创建基础卷积函数,简化写法
def conv2d(x, W, b, strides=1):# Conv2D wrapper, with bias and relu activation,卷积层,包含bias与非线性relu激励x = tf.nn.conv2d(x, W, strides=[1, strides, strides, 1], padding='SAME')x = tf.nn.bias_add(x, b)return tf.nn.relu(x)def maxpool2d(x, k=2):# MaxPool2D wrapper,最大池化层return tf.nn.max_pool(x, ksize=[1, k, k, 1], strides=[1, k, k, 1],padding='SAME')# Create model,创建模型
def conv_net(x, weights, biases, dropout):# MNIST数据为维度为1,长度为784 (28*28 像素)的# Reshape to match picture format [Height x Width x Channel]# Tensor input become 4-D: [Batch Size, Height, Width, Channel]x = tf.reshape(x, shape=[-1, 28, 28, 1])# Convolution Layer,卷积层conv1 = conv2d(x, weights['wc1'], biases['bc1'])# Max Pooling (down-sampling),最大池化层/下采样conv1 = maxpool2d(conv1, k=2)# Convolution Layer,卷积层conv2 = conv2d(conv1, weights['wc2'], biases['bc2'])# Max Pooling (down-sampling),最大池化层/下采样conv2 = maxpool2d(conv2, k=2)# Fully connected layer,全连接网络# Reshape conv2 output to fit fully connected layer input,调整conv2层输出的结果以符合全连接层的需求fc1 = tf.reshape(conv2, [-1, weights['wd1'].get_shape().as_list()[0]])fc1 = tf.add(tf.matmul(fc1, weights['wd1']), biases['bd1'])fc1 = tf.nn.relu(fc1)# Apply Dropout,应用dropoutfc1 = tf.nn.dropout(fc1, dropout)# Output, class prediction,最后输出预测out = tf.add(tf.matmul(fc1, weights['out']), biases['out'])return out# In[4]:# Store layers weight & bias 存储每一层的权值和全差
weights = {# 5x5 conv, 1 input, 32 outputs'wc1': tf.Variable(tf.random_normal([5, 5, 1, 32])),# 5x5 conv, 32 inputs, 64 outputs'wc2': tf.Variable(tf.random_normal([5, 5, 32, 64])),# fully connected, 7*7*64 inputs, 1024 outputs'wd1': tf.Variable(tf.random_normal([7*7*64, 1024])),# 1024 inputs, 10 outputs (class prediction)'out': tf.Variable(tf.random_normal([1024, num_classes]))
}biases = {'bc1': tf.Variable(tf.random_normal([32])),'bc2': tf.Variable(tf.random_normal([64])),'bd1': tf.Variable(tf.random_normal([1024])),'out': tf.Variable(tf.random_normal([num_classes]))
}# Construct model,构建模型
logits = conv_net(X, weights, biases, keep_prob)
prediction = tf.nn.softmax(logits)# Define loss and optimizer,定义误差函数与优化器
loss_op = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=Y))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)
train_op = optimizer.minimize(loss_op)# Evaluate model,评估模型
correct_pred = tf.equal(tf.argmax(prediction, 1), tf.argmax(Y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))# Initialize the variables (i.e. assign their default value),初始化图结构所有变量
init = tf.global_variables_initializer()# In[5]:# Start training,开始训练
with tf.Session() as sess:# Run the initializer,初始化sess.run(init)for step in range(1, num_steps+1):batch_x, batch_y = mnist.train.next_batch(batch_size)# Run optimization op (backprop),优化sess.run(train_op, feed_dict={X: batch_x, Y: batch_y, keep_prob: dropout})if step % display_step == 0 or step == 1:# Calculate batch loss and accuracyloss, acc = sess.run([loss_op, accuracy], feed_dict={X: batch_x,Y: batch_y,keep_prob: 1.0})print("Step " + str(step) + ", Minibatch Loss= " +                   "{:.4f}".format(loss) + ", Training Accuracy= " +                   "{:.3f}".format(acc))print("Optimization Finished!")# Calculate accuracy for 256 MNIST test images,以每256个测试图像为例,print("Testing Accuracy:",         sess.run(accuracy, feed_dict={X: mnist.test.images[:256],Y: mnist.test.labels[:256],keep_prob: 1.0}))

两层卷积网络实现手写数字的识别(基于tensorflow)相关推荐

  1. 两层卷积网络实现手写字母的识别(基于tensorflow)

    可和这篇文章对比,https://blog.csdn.net/fanzonghao/article/details/81489049,数据集来源代码和链接一样. import tensorflow a ...

  2. 用Keras搭建神经网络 简单模版(三)—— CNN 卷积神经网络(手写数字图片识别)...

    # -*- coding: utf-8 -*- import numpy as np np.random.seed(1337) #for reproducibility再现性 from keras.d ...

  3. python识别手写数字字体_基于tensorflow框架对手写字体MNIST数据集的识别

    本文我们利用python语言,通过tensorflow框架对手写字体MNIST数据库进行识别. 学习每一门语言都有一个"Hello World"程序,而对数字手写体数据库MNIST ...

  4. CNN网络实现手写数字(MNIST)识别 代码分析

    CNN网络实现手写数字(MNIST)识别 代码分析(自学用) Github代码源文件 本文是学习了使用Pytorch框架的CNN网络实现手写数字(MNIST)识别 #导入需要的包 import num ...

  5. 读书笔记-深度学习入门之pytorch-第四章(含卷积神经网络实现手写数字识别)(详解)

    1.卷积神经网络在图片识别上的应用 (1)局部性:对一张照片而言,需要检测图片中的局部特征来决定图片的类别 (2)相同性:可以用同样的模式去检测不同照片的相同特征,只不过这些特征处于图片中不同的位置, ...

  6. 基于Python的BP网络实现手写数字识别

    资源下载地址:https://download.csdn.net/download/sheziqiong/86790047 资源下载地址:https://download.csdn.net/downl ...

  7. 基于卷积神经网络的手写数字识别(附数据集+完整代码+操作说明)

    基于卷积神经网络的手写数字识别(附数据集+完整代码+操作说明) 配置环境 1.前言 2.问题描述 3.解决方案 4.实现步骤 4.1数据集选择 4.2构建网络 4.3训练网络 4.4测试网络 4.5图 ...

  8. DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Functional)利用MNIST(手写数字图片识别)数据集实现多分类预测

    DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Functional)利用MNIST(手写数字图片识别)数据集实现多分类预测 目录 输出结果 设计思路 核心代码 输出结果 下边两张 ...

  9. DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测

    DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测 目录 输出结果 设计思路 核心代码 输出结果 1.10 ...

最新文章

  1. 用ASP.NET上传大文件
  2. 安卓机更新系统会卡吗_【ios13更新】最全的ios13系统的攻略,最大一次更新,升级绝对不会后悔吗?来看看...
  3. python亲密度_Python OpenCV 图像2D直方图,取经之旅第 25 天
  4. BPP 相关——01
  5. 论文Algorithms for non-negative matrix Factorization
  6. 人民网舆情:公众对网约车或存偏见
  7. linux 跟踪运行的进程,使用 Linux 的 strace 命令跟踪/调试程序的常用选项
  8. 使用阿里云镜像加速器为docker pull提速
  9. python查看字符编码值_Python 字符编码
  10. Sketchup 2022下载
  11. 光纤通道与以太网交换机之间有什么区别呢?
  12. 斗地主游戏发牌C#程序
  13. Java Swing实现高仿电脑版微信
  14. python一只青蛙一次可以_Python算法题(一)——青蛙跳台阶
  15. 学信网查学历和学位网查学位的基本操作
  16. QQ微信实现连续发送消息【代码实现】
  17. 第四章网页文字编排设计
  18. 如何利用U盘进行重装win10系统[亲测有效]
  19. java 上传zip压缩文件并且解压
  20. Prometheus入门使用(三)

热门文章

  1. 26岁!年入100万,两周把 Github 项目推向全球榜首,他是怎么做的?
  2. Facebook大公开:解决NLG模型落地难题!工业界的新一波春天?
  3. 细数一行代码改变结局的炼丹骚操作
  4. VS Code HtmlFindClass 插件介绍
  5. 论文阅读课2-Inter-sentence Relation Extraction with Document-level (GCNN,句间关系抽取,ACL2019
  6. 9 计算机组成原理第五章 中央处理器 指令流水线
  7. Spring体系常用方法(一)
  8. java自用代码(包括:新建单线程、创建文件夹及文件、map转为json并将json写入txt、文件剪切或改名)...
  9. JavaScript中的内置对象-8--4.date对象中-获取,设置日期时间的方法; 获取,设置年月日时分秒及星期的方法;...
  10. With you With me