docx

tensorflow_cnn代码

  • 1星
  • 日期: 2018-06-01
  • 大小: 14.51KB
  • 所需积分:1分
  • 下载次数:0
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: tensorflowcnn代码

用CNN网络来实现手写数字的识别

文档内容节选

import tensorflow as tffrom tensorflowexamplestutorialsmnist import inputdatamnist inputdatareaddatasetsMNISTdataonehotTrue每个批次的大小batchsize 100计算一共有多少个批次nbatch mnisttrainnumexamples batchsize参数概要def variablesummariesvarwith tfnamescopesummariesmean tfreducemeanvartfsummaryscalarmean mean平均值with tfnamescopestddevstddev tfsqrttfreducemeantfsquarevar meantfsummaryscalarstddev stddev标准差tfsummaryscalarmax tfreducemaxvar最大值tfsummaryscalarmin tfreduceminvar最小值tfsummaryhistogramhistogram var直方图初始......

import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets('MNIST_data',one_hot=True)#每个批次的大小batch_size = 100#计算一共有多少个批次n_batch = mnist.train.num_examples // batch_size#参数概要def variable_summaries(var):with tf.name_scope('summaries'):mean = tf.reduce_mean(var)tf.summary.scalar('mean', mean)#平均值with tf.name_scope('stddev'):stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean)))tf.summary.scalar('stddev', stddev)#标准差tf.summary.scalar('max', tf.reduce_max(var))#最大值tf.summary.scalar('min', tf.reduce_min(var))#最小值tf.summary.histogram('histogram', var)#直方图#初始化权值def weight_variable(shape,name):initial = tf.truncated_normal(shape,stddev=0.1)#生成一个截断的正态分布return tf.Variable(initial,name=name)#初始化偏置def bias_variable(shape,name):initial = tf.constant(0.1,shape=shape)return tf.Variable(initial,name=name)#卷积层#x input tensor of shape `[batch, in_height, in_width, in_channels]`#W filter / kernel tensor of shape [filter_height, filter_width, in_channels, out_channels]#`strides[0] = strides[3] = 1`. strides[1]代表x方向的步长,strides[2]代表y方向的步长#padding: A `string` from: `"SAME", "VALID"`def conv2d(x,W):return tf.nn.conv2d(x,W,strides=[1,1,1,1],padding='SAME')#池化层def max_pool_2x2(x):#ksize [1,x,y,1]return tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,2,2,1],padding='SAME')#命名空间with tf.name_scope('input'):#定义两个placeholderx = tf.placeholder(tf.float32,[None,784],name='x-input')y = tf.placeholder(tf.float32,[None,10],name='y-input')with tf.name_scope('x_image'):#改变x的格式转为4D的向量[batch, in_height, in_width, in_channels]`x_image = tf.reshape(x,[-1,28,28,1],name='x_image')with tf.name_scope('Conv1'):#初始化第一个卷积层的权值和偏置with tf.name_scope('W_conv1'):W_conv1 = weight_variable([5,5,1,32],name='W_conv1')#5*5的采样窗口,32个卷积核从1个平面抽取特征with tf.name_scope('b_conv1'):b_conv1 = bias_variable([32],name='b_conv1')#每一个卷积核一个偏置值#把x_image和权值向量进行卷积,再加上偏置值,然后应用于relu激活函数with tf.name_scope('conv2d_1'):conv2d_1 = conv2d(x_image,W_conv1) + b_conv1with tf.name_scope('relu'):h_conv1 = tf.nn.relu(conv2d_1)with tf.name_scope('h_pool1'):h_pool1 = max_pool_2x2(h_conv1)#进行max-poolingwith tf.name_scope('Conv2'):#初始化第二个卷积层的权值和偏置with tf.name_scope('W_conv2'):W_conv2 = weight_variable([5,5,32,64],name='W_conv2')#5*5的采样窗口,64个卷积核从32个平面抽取特征with tf.name_scope('b_conv2'):b_conv2 = bias_variable([64],name='b_conv2')#每一个卷积核一个偏置值#把h_pool1和权值向量进行卷积,再加上偏置值,然后应用于relu激活函数with tf.name_scope('conv2d_2'):conv2d_2 = conv2d(h_pool1,W_conv2) + b_conv2with tf.name_scope('relu'):h_conv2 = tf.nn.relu(conv2d_2)with tf.name_scope('h_pool2'):h_pool2 = max_pool_2x2(h_conv2)#进行max-pooling#28*28的图片第一次卷积后还是28*28,第一次池化后变为14*14#第二次卷积后为14*14,第二次池化后变为了7*7#进过上面操作后得到64张7*7的平面with tf.name_scope('fc1'):#初始化第一个全连接层的权值with tf.name_scope('W_fc1'):W_fc1 = weight_variable([7*7*64,1024],name='W_fc1')#上一场有7*7*64个神经元,全连接层有1024个神经元with tf.name_scope('b_fc1'):b_fc1 = bias_variable([1024],name='b_fc1')#1024个节点#把池化层2的输出扁平化为1维with tf.name_scope('h_pool2_flat'):h_pool2_flat = tf.reshape(h_pool2,[-1,7*7*64],name='h_pool2_flat')#求第一个全连接层的输出with tf.name_scope('wx_plus_b1'):wx_plus_b1 = tf.matmul(h_pool2_flat,W_fc1) + b_fc1with tf.name_scope('relu'):h_fc1 = tf.nn.relu(wx_plus_b1)#keep_prob用来表示神经元的输出概率with tf.name_scope('keep_prob'):keep_prob = tf.placeholder(tf.float32,name='keep_prob')with tf.name_scope('h_fc1_drop'):h_fc1_drop = tf.nn.dropout(h_fc1,keep_prob,name='h_fc1_drop')with tf.name_scope('fc2'):#初始化第二个全连接层with tf.name_scope('W_fc2'):W_fc2 = weight_variable([1024,10],name='W_fc2')with tf.name_scope('b_fc2'):b_fc2 = bias_variable([10],name='b_fc2')with tf.name_scope('wx_plus_b2'):wx_plus_b2 = tf.matmul(h_fc1_drop,W_fc2) + b_fc2with tf.name_scope('softmax'):#计算输出prediction = tf.nn.softmax(wx_plus_b2)#交叉熵代价函数with tf.name_scope('cross_entropy'):cross_entropy= tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=prediction),name='cross_entropy')tf.summary.scalar('cross_entropy',cross_entropy)#使用AdamOptimizer进行优化with tf.name_scope('train'):train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)#求准确率with tf.name_scope('accuracy'):with tf.name_scope('correct_prediction'):#结果存放在一个布尔列表中correct_prediction = tf.equal(tf.argmax(prediction,1),tf.argmax(y,1))#argmax返回一维张量中最大的值所在的位置with tf.name_scope('accuracy'):#求准确率accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))tf.summary.scalar('accuracy',accuracy)#合并所有的summarymerged = tf.summary.merge_all()with tf.Session() as sess:sess.run(tf.global_variables_initializer())train_writer = tf.summary.FileWriter('logs/train',sess.graph)test_writer = tf.summary.FileWriter('logs/test',sess.graph)for i in range(1001):#训练模型batch_xs,batch_ys = mnist.train.next_batch(batch_size)sess.run(train_step,feed_dict={x:batch_xs,y:batch_ys,keep_prob:0.5})#记录训练集计算的参数summary = sess.run(merged,feed_dict={x:batch_xs,y:batch_ys,keep_prob:1.0})train_writer.add_summary(summary,i)#记录测试集计算的参数batch_xs,batch_ys = mnist.test.next_batch(batch_size)summary = sess.run(merged,feed_dict={x:batch_xs,y:batch_ys,keep_prob:1.0})test_writer.add_summary(summary,i)if i%100==0:test_acc= sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels,keep_prob:1.0})train_acc= sess.run(accuracy,feed_dict={x:mnist.train.images[:10000],y:mnist.train.labels[:10000],keep_prob:1.0})print ("Iter " + str(i) + ", Testing Accuracy= " + str(test_acc) + ", Training Accuracy= " + str(train_acc))
更多简介内容

推荐帖子

如何快速的掌握不同类型MCU的原理和功能
任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量、指令系统等。对于指令系统,虽然形式上看似千差万别,但实际上只是符号的不同,其所代表的含义、所要完成的功能和寻址方式基本上是类似的。因此,对于任何一款MCU,主要应从如下的几个方面来理解和掌握: MCU的特点:要了解一款MCU,首先需要知道就是其ROM空间、RAM空间、IO口数量、定时器数量和定时方式、所提供
Aguilera 【微控制器 MCU】
天线的一些知识总结
天线的输入阻抗  天线的输入阻抗是天线馈电端输入电压与输入电流的比值。天线与馈线的连接,最佳情形是天线输入阻抗是纯电阻且等于馈线的特性阻抗,这时馈线终端没有功率反射,馈线上没有驻波,天线的输入阻抗随频率的变化比较平缓。天线的匹配工作就是消除天线输入阻抗中的电抗分量,使电阻分量尽可能地接近馈线的特性阻抗。匹配的优劣一般用四个参数来衡量即反射系数,行波系数,驻波比和回波损耗,四个参数之间有固定的数值
蓝先生 RF/无线
本周下载最多的电子技术资料大汇总(2020.5.10~15)
    小管就把这一周下载比较多的资料汇总如下,供大家学习参考!   TI 元器件库(元件库、封装库、3D库): http://download.eeworld.com.cn/detail/qwqwqw2088/589383 PCB设计秘籍: http://download.eeworld.com.cn/detail/FANGJerry/61106
高进 下载中心专版
大彩串口屏在多功能智能消毒柜中的应用
传染性疾病由于其传播能力强,一旦无法控制源头,将带来大面积的扩散和传染,对治疗和控制的难度大大增加,如2003年的SARS,2009年的H1N1,2014年的埃博拉,以及当前的2019新型冠状病毒(2019-nCoV)等传染病都有过较长的爆发期,世界卫生组织对于全球性的传染性疾病的防控工作都非常重视。控制交叉感染的重要环节之一就是对媒介物品上的病原体进行消杀。媒介物品包括如:餐具、衣物、工具、现金
dcolour2019 单片机
【 ST NUCLEO-H743ZI测评】+ 4、串口输出
本帖最后由 TL-LED 于 2020-5-15 14:52 编辑     这篇来学习下串口的使用,使用串口输出一串字符到PC机。HAL 库之前没怎么使用过,和之前的标准库还是有些区别。       一、硬件电路     使用ST-LINK虚拟串口来与PC机通信     1.1、仿真器接口         1.2、MCU接口     M
TL-LED 【stm32/stm8】
LOTO课4:三极管2N3904共射放大电路的实践
三极管的基本放大电路有共射放大电路、共基放大电路和共集放大电路,其中共射放大电路是应用最广泛的一种接法。下图为三极管共射放大电路原理,左端输入,右端输出,发射极(e)是输入和输出的公共端,因此称之为共射放大电路。      今天的视频就是想通过搭建上图这样的三极管放大电路,在LOTO示波器和信号发生器模块的帮助下来观察整个电路的输入输出信号的波形。我们的实物电路图以2N3
LOTO2018 【测试/测量】

评论

登录/注册

意见反馈

求资源

回顶部

datasheet推荐 换一换

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })