tensorflow学习之路-----简单卷积神经网路
import tensorflow as tf
#取数据,目的是辨别数字
from tensorflow.examples.tutorials.mnist import input_data
'''
手动添加数据集:先把4个数据包放进当前目录的文件夹里面
'''
MNIST_data_folder="C:\\Users\\悟悔\\MNIST_data"#路径
mnist=input_data.read_data_sets("MNIST_data/",one_hot=True)
def weight_variable(shape):
initial = tf.Variable(tf.truncated_normal(shape,stddev=0.1))
return initial
def bais_variable(shape):
return tf.constant(0.1,shape=shape)
#定义卷积函数
def conv2d(x,W):
return tf.nn.conv2d(x,W,strides=[1,1,1,1],padding="SAME")
def max_pool_2x2(x):
return tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,2,2,1],padding="SAME")
x_data = tf.placeholder(tf.float32,[None,784])#28x28
y_data = tf.placeholder(tf.float32,[None,10])
keep_prol = tf.placeholder(tf.float32)
x_image = tf.reshape(x_data,[-1,28,28,1])
'''
-1:表示可以接受任意的照片
28,28=28x28:表示像素
1:表示图像通道,也可以表示图片的厚度。因为是黑白的所以是1,如果是RGB照片就是3
'''
'''
第一次卷积
'''
conv1_weight = weight_variable([5,5,1,32])
'''
5,5:表述卷积核的大小,即长宽
1:表示图像通道,也可以表示图片的厚度。因为是黑白的所以是1,如果是RGB照片就是3
32:自定义的一个输出厚度【特征映射】
'''
conv1_bais = bais_variable([32])
'''
要和卷积过后的输出厚度一致
'''
d_conv1 = tf.nn.relu(conv2d(x_image,conv1_weight)+conv1_bais)#用一个激烈函数,将他们非线性化,28x28x32
'''
运算:28x28x1 经过卷积核 5x5x32 转化为 28x28x32 (因为这是SAME,因此输出的大小和原来的相同,32是因为我们自定义输出的厚度)
'''
d_pool1 = max_pool_2x2(d_conv1)#14x14x32
'''
池化运算:
28x28x32 因为池化窗口大小2x2,并且池化是将像素缩短的过程,因此为14x14x32
'''
'''
第二次卷积
'''
conv2_weight = weight_variable([5,5,32,64])
conv2_bais = bais_variable([64])
d_conv2 = conv2d(d_pool1,conv2_weight)+conv2_bais
d_pool2 = max_pool_2x2(d_conv2)
'''
这个运算是和上面的一样
'''
'''
第一次全连神经
'''
Weights1 = weight_variable([7*7*64,1024])
baises1 = bais_variable([1024])
inputs1 = tf.reshape(d_pool2,[-1,7*7*64])
'''
将d_pool2转化为一维的数据
'''
W_plus_bs1= tf.nn.relu(tf.matmul(inputs1,Weights1)+baises1)
W_plus_b1 = tf.nn.dropout(W_plus_bs1,keep_prol)
'''
第二次全连接
'''
Weights2 = weight_variable([1024,10])
baises2 = bais_variable([10])
prediction = tf.nn.softmax(tf.matmul(W_plus_b1,Weights2)+baises2)
'''
误差分析和优化
'''
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_data * tf.log(prediction),
reduction_indices=[1]))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
init = tf.global_variables_initializer()
def compute_accuracy(v_xs, v_ys):
global prediction
y_pre = sess.run(prediction, feed_dict={x_data: v_xs, keep_prol: 1})
correct_prediction = tf.equal(tf.argmax(y_pre,1), tf.argmax(v_ys,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
result = sess.run(accuracy, feed_dict={xs: v_xs, ys: v_ys, keep_prol: 1})
return result
:
print(compute_accuracy(mnist.test.images,mnist.test.labels))
tensorflow学习之路-----简单卷积神经网路的更多相关文章
- tensorflow学习之路---简单的代码
import numpyimport tensorflow as tf #自己创建的数据x_data = numpy.random.rand(100).astype(numpy.float32)#创建 ...
- tensorflow学习2-线性拟合和神经网路拟合
线性拟合的思路: 线性拟合代码: import tensorflow as tf import numpy as np import matplotlib.pyplot as plt #%%图形绘制 ...
- tensorflow学习笔记——图像识别与卷积神经网络
无论是之前学习的MNIST数据集还是Cifar数据集,相比真实环境下的图像识别问题,有两个最大的问题,一是现实生活中的图片分辨率要远高于32*32,而且图像的分辨率也不会是固定的.二是现实生活中的物体 ...
- tensorflow学习之路-----卷积神经网络个人总结
卷积神经网络大总结(个人理解) 神经网络 1.概念:从功能他们模仿真实数据 2.结构:输入层.隐藏层.输出层.其中隐藏层要有的参数:权重.偏置.激励函数.过拟合 3.功能:能通过模仿,从而学到事件 其 ...
- Tensorflow学习:(三)神经网络优化
一.完善常用概念和细节 1.神经元模型: 之前的神经元结构都采用线上的权重w直接乘以输入数据x,用数学表达式即,但这样的结构不够完善. 完善的结构需要加上偏置,并加上激励函数.用数学公式表示为:.其中 ...
- java学习之路--简单基础的面试题
1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注 ...
- tensorflow学习之路-----MNIST数据
''' 神经网络的过程:1.准备相应的数据库 2.定义输入成 3.定义输出层 4.定义隐藏层 5.训练(根据误差进行训练) 6.对结果进行精确度评估 ''' import tensorflow as ...
- html学习之路--简单图片轮播
一个简单的图片轮播效果 photo.html页面代码,基本的HTML结构,在main中显示图片,此处图片依次命名为1.jpg.2.jpg.3.jpg.4.jpg. <!DOCTYPE html& ...
- TensorFlow学习之路1-TensorFlow介绍
TensorFlow是一个采用数据流图(data flow graphs),用于数据计算的开源软件库. 什么是数据流图? TensorFlow的数据流图是由“节点”(nodes)和“线”(edges) ...
随机推荐
- mysql-基础和基本指令
基础: 1.数据库模式:简单的说:就是一个数据库用户所拥有的数据库的对象. 比如scott用户建立了表,索引,视图,存储过程等对象,那么这些对象就构成了schema scott .有时用作数据 ...
- Datazen图表创建和公布
Datazen是被微软收购的移动端全平台的数据展现解决方式.此篇主要介绍怎样创建和公布图表. 如前面介绍,Datazen图表的创建和公布是通过Publisher的应用,它是Windows 8应用 ...
- C++ 何时使用动态分配(即使用newkeyword)?何时使用指针?
动态分配 在你的问题里.你用了两种方式创建对象.这两种方式基本的不同在于对象的存储时间. 当运行Object myObject;这句代码时.它作为自己主动变量被创建,这意味着当对象出了作用域时也会自己 ...
- 赵雅智:android教学大纲
带下划线为详细内容链接地址.点击后可跳转.希望给大家尽一些微薄之力.眼下还在整理中 教学章节 教学内容 学时安排 备注 1 Android高速入门 2 Android模拟器与常见命令 3 Androi ...
- 用LogParser分析Windows日志
用LogParser分析Windows日志 实战案例分享 假设你已具有上面的基础知识,那么以下为你准备了更加深入的应用操作视频(从安装到使用的全程记录): http://www.tudou.com/p ...
- Java类和对象4
编写Java应用程序.首先,定义一个Print类,它有一个方法void output(intx),如果x的值是1,在控制台打印出大写的英文字母表:如果x的值是2,在控制台打印出小写的英文字母表.其次, ...
- <Sicily>Polynomial
一.题目描述 Given a polynomial and the value of the variable x, you task is to calculate the value of the ...
- MFC 创建新项目
本文主要介绍如何是使用vc++创建MFC项目,并简单介绍整个项目的基本框架.文件–>新建,会弹出以下新建文件(项目)类型的界面,如下 按上图的步骤u,创建一个MFC工程.其中步骤3中的CardD ...
- 阿里云安装mysql数据库出现2002错误解决办法
在安装数据库的时候出现了如下错误: 解决办法如下: 1.在bin目录下 输入:kill -s 9 9907 再输入:ps -ef|grep mysql 显示如下: 2.回到lampp目录下,重启数据库 ...
- 浅谈Sass与Less区别、优缺点
Sass是一种动态样式语言,Sass语法的缩排语法,比Css比多出很多功能,如变量,嵌套,运算,继承,颜色处理,函数等,易于阅读.Cass的安装需要安装Ruby环境,是服务器端处理的,Less是需要引 ...