以上是模型,下面是代码:

 import tensorflow as tf
import numpy as np
import time
from tensorflow.examples.tutorials.mnist import input_data import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '' start = time.clock() # 下载并载入MNIST 手写数字库
mnist = input_data.read_data_sets("./data/MNIST", one_hot=True) input_x = tf.placeholder(tf.float32, shape=[None, 28 * 28]) / 255 # 灰度的处理
output_y = tf.placeholder(tf.float32, shape=[None, 10]) #输出10个数字的标签
input_x_images = tf.reshape(input_x, shape=[-1, 28, 28, 1]) #改变形状之后的输入 # 从Test(测试)数据集里选取3000个手写数字的图片和对应的标签
test_x = mnist.test.images[:3000]
test_y = mnist.test.labels[:3000] # 构建我们的卷积神经网络
# 第一层卷积
conv1 = tf.layers.conv2d(inputs=input_x_images, # 形状为[28,28,1]
filters=32, # 32个过滤器,输出的深度位32
kernel_size=[5, 5], # 过滤器在二维的大小是(5*5)
strides=1, # 步长是1
padding="same", # snme表示输出大小不变,因此要在外围补零2圈
activation=tf.nn.relu # 表示激活函数是relu
) # 形状[28,28,32] # 第一层池化(亚采样)
pool1 = tf.layers.max_pooling2d(
inputs=conv1, # 形状[28,28,32]
pool_size=[2, 2], # 过滤器在二维的大小是[2,2]
strides=2 # 步长是2
) # 形状[14,14,32] # 第二层卷积
conv2 = tf.layers.conv2d(inputs=pool1, # 形状为[14,14,32]
filters=64, # 64个过滤器,输出的深度位64
kernel_size=[5, 5], # 过滤器在二维的大小是(5*5)
strides=1, # 步长是1
padding="same", # snme表示输出大小不变,因此要在外围补零2圈
activation=tf.nn.relu # 表示激活函数是relu
) # 形状[14,14,64] # 第二层池化(亚采样)
pool2 = tf.layers.max_pooling2d(
inputs=conv2, # 形状[14,14,64]
pool_size=[2, 2], # 过滤器在二维的大小是[2,2]
strides=2 # 步长是2
) # 形状[7,7,64] #平坦化(flat)
flat = tf.reshape(pool2,shape=[-1,7 * 7 * 64]) #形状[7 * 7 * 64] #1024个神经元的全连接层
dense = tf.layers.dense(inputs=flat,units=1024,activation=tf.nn.relu) #Dropout :丢弃 50% rate = 0.5
dropout = tf.layers.dropout(inputs=dense,rate=0.5) #10个神经元的全连接层,这里不用激活函数来做非线性化了。
logits = tf.layers.dense(inputs=dropout,units=10) #输出形状[1,1,10] #计算误差(计算 Cross entropy(交叉熵)),再用softmax计算百分比概率
loss = tf.losses.softmax_cross_entropy(onehot_labels=output_y,logits=logits) # Adam 优化器来最小化误差,学习率0.001
train_op = tf.train.AdadeltaOptimizer(learning_rate=0.001).minimize(loss) #精度,计算,预测值 和 实际标签 的匹配程度
#返回 (accuracy .update_op) 会创建两个局部变量
accuracy = tf.metrics.accuracy(
labels=tf.argmax(input=output_y,axis=1),
predictions=tf.argmax(input=logits,axis=1)
)[1] #创建会话
with tf.Session() as sess:
#初始化变量
init = tf.group(tf.global_variables_initializer(),tf.local_variables_initializer())
sess.run(init)
for i in range(20000):
batch = mnist.train.next_batch(50) #从Train(训练)数据集里下一个50个样本
train_loss,train_op_ = sess.run([loss,train_op],feed_dict={input_x:batch[0],output_y:batch[1]})
if i % 100 == 0:
test_accuracy = sess.run(accuracy,feed_dict={input_x:test_x,output_y:test_y})
print(("Step+%d,Train loss=%.4f,[Test accuracy=%.2f]") % (i,train_loss,test_accuracy)) #测试:打印20个 预测值 和 真实值 的对
test_output = sess.run(logits,feed_dict={input_x:test_x[:20]})
inference_y = np.argmax(test_output,1)
print(inference_y," Inference number") #推测的数字
print(np.argmax(test_y[:20],1),"Real numbers") #真实的数字 #显示时间
end = time.clock()
print(end - start, "秒")

当然CNN还有很长一段路要走。代码不容易,且敲且珍惜。

实现CNN卷积神经网络的更多相关文章

  1. Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN

    http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep le ...

  2. [转]Theano下用CNN(卷积神经网络)做车牌中文字符OCR

    Theano下用CNN(卷积神经网络)做车牌中文字符OCR 原文地址:http://m.blog.csdn.net/article/details?id=50989742 之前时间一直在看 Micha ...

  3. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)

    Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文, ...

  4. CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?

    https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...

  5. CNN(卷积神经网络)、RNN(循环神经网络)、DNN,LSTM

    http://cs231n.github.io/neural-networks-1 https://arxiv.org/pdf/1603.07285.pdf https://adeshpande3.g ...

  6. day-16 CNN卷积神经网络算法之Max pooling池化操作学习

    利用CNN卷积神经网络进行训练时,进行完卷积运算,还需要接着进行Max pooling池化操作,目的是在尽量不丢失图像特征前期下,对图像进行downsampling. 首先看下max pooling的 ...

  7. cnn(卷积神经网络)比较系统的讲解

    本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之 ...

  8. Keras(四)CNN 卷积神经网络 RNN 循环神经网络 原理及实例

    CNN 卷积神经网络 卷积 池化 https://www.cnblogs.com/peng8098/p/nlp_16.html 中有介绍 以数据集MNIST构建一个卷积神经网路 from keras. ...

  9. TensorFlow——CNN卷积神经网络处理Mnist数据集

    CNN卷积神经网络处理Mnist数据集 CNN模型结构: 输入层:Mnist数据集(28*28) 第一层卷积:感受视野5*5,步长为1,卷积核:32个 第一层池化:池化视野2*2,步长为2 第二层卷积 ...

  10. tensorflow CNN 卷积神经网络中的卷积层和池化层的代码和效果图

    tensorflow CNN 卷积神经网络中的卷积层和池化层的代码和效果图 因为很多 demo 都比较复杂,专门抽出这两个函数,写的 demo. 更多教程:http://www.tensorflown ...

随机推荐

  1. [转]自建Syncthing中继服务器(私密传输或造福大众)

    自建Syncthing中继服务器(私密传输或造福大众) 一.介绍 我之前介绍了Syncthing,作为一款开源的文件同步程序,它的功能还是非常强大的,我也很高兴能看到它被越来越多的人知道和使用,前几天 ...

  2. [例子]Ubuntu虚拟机设置固定IP上网

    宿主机器     win7 linux            Ubuntu 14.04 LTS 参考: Linux系列:Ubuntu虚拟机设置固定IP上网(配置IP.网关.DNS.防止resolv.c ...

  3. 解决讨厌的警告 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

    问题: 执行任何hadoop命令,都会提示如下WARN.虽然影响不大,但是每次运行一个命令都有这么个WARN,让人很不爽,作为一个精致的男人, 必须要干掉它. [root@master logs]# ...

  4. 利用grep参数查看某关键词前后几行内容

    查看文件中含有“哈哈哈”关键字所在行后5行内容 cat xxxxxx | grep -A 5 哈哈哈 查看文件中含有“哈哈哈”关键字所在行前5行内容 cat xxxxxx | grep -B 5 哈哈 ...

  5. .NET Windows服务开发流程

    前段时间做一个数据迁移项目,刚开始用B/S架构做的项目,但B/S要寄存在IIs中,而IIs又不稳定因素,如果重启IIs就要打开页面才能运行项目.有不便之处,就改用Windows服务实现.这篇就总结下, ...

  6. Warning: mysqli_connect(): The server requested authentication method unknown to the client [caching_sha2_password]报错解决方法

    错误: 解决方法:

  7. 爬虫系列1:Requests+Xpath 爬取豆瓣电影TOP

    爬虫1:Requests+Xpath 爬取豆瓣电影TOP [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]: ...

  8. ubuntu 装机步骤表

    步骤 1. root 步骤 apt-get update ; apt-get upgrate apt-get install git zsh apt-get install -y make build ...

  9. WebApp的自动测试工具: protractor和selenium

    Protractor是Selenium的扩充,支持Angularjs element(by.css('my-css')).click(); 一.用by的各种Locator定位元素 选中1个元素: el ...

  10. 文件数据缓存(key-Value)

    为了解决大量数据缓存,消耗内存过多的问题,特别实现了文件缓存:该缓存主要是应用于多存少读的情况,一般我们做缓存是实现将数据放在内存中或者数据库中:放在内存中就会消耗很大内存,尤其在高并发大数据缓存时, ...