二隐层的神经网络实现MNIST数据集分类

 二隐层的神经网络实现MNIST数据集分类

传统的人工神经网络包含三部分,输入层隐藏层输出层。对于一个神经网络模型的确定需要考虑以下几个方面:

  • 隐藏层的层数以及各层的神经元数量
  • 各层激活函数的选择
  • 输入层输入数据的shape
  • 输出层神经元的数量

以上神经网络的骨架确定之后,则相应的权重和偏置所对应的shape也随之确定,即网络结构的确定。

下面的代码是通过二隐层的神经网络实现MNIST手写数字的分类,下图为该神经网络的网络结构

 

# 用两隐层神经网络实现手写数字(mnist)分类
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import numpy as np
import matplotlib.pyplot as pltmnist = input_data.read_data_sets('D:\MNIST_data', one_hot=True)n_hidden_1 = 256
n_hidden_2 = 128
n_input = 784
n_classes = 10# INPUT AND OUTPUT
x = tf.placeholder(tf.float32, [None, n_input])
y = tf.placeholder(tf.float32, [None, n_classes])# NETWORK PARAMETERS
stddev = 0.1
weights = {"w1": tf.Variable(tf.random_normal([n_input, n_hidden_1], stddev=stddev)),"w2": tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2], stddev=stddev)),"out": tf.Variable(tf.random_normal([n_hidden_2, n_classes], stddev=stddev))
}
biases = {"b1": tf.Variable(tf.zeros([n_hidden_1], tf.float32)),"b2": tf.Variable(tf.zeros([n_hidden_2], tf.float32)),"out": tf.Variable(tf.zeros([n_classes], tf.float32))
}def network(inputs, weights, biases):layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(inputs, weights['w1']), biases['b1']))layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['w2']), biases['b2']))pre = tf.matmul(layer_2, weights['out']) + biases['out']return prepred = network(x, weights, biases)cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=pred))
train = tf.train.GradientDescentOptimizer(0.001).minimize(cost)
acc = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(acc, tf.float32))init = tf.global_variables_initializer()train_step = 500
batch_size = 100
display_step = 10with tf.Session() as sess:sess.run(init)for k in range(train_step):loss = 0num_batch = int(mnist.train.num_examples/batch_size)for L in range(num_batch):batch_xs, batch_ys = mnist.train.next_batch(100)sess.run(train, feed_dict={x: batch_xs, y: batch_ys})_loss = sess.run(cost, feed_dict={x: batch_xs, y: batch_ys})loss += _lossif k % display_step == 0:_accuracy = sess.run(accuracy, feed_dict={x: mnist.test.images, y: mnist.test.labels})print('loss:%2f' % loss, '  accuracy:%2f' % _accuracy)

训练500次之后,测试精度为:

loss:167.206619 accuracy:0.916900

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android之SurfaceView

SurfaceView也是继承了View,但是我们并不需要去实现它的draw方法来绘制自己,为什么呢? 因为它和View有一个很大的区别,View在UI线程去更新自己;而SurfaceView则在一个子线程中去更新自己;这也显示出了它的…

MATLAB画图设置线条透明度

plot1 plot(x,y); plot1.Color(4) 0.5; 调节Color(4)这个参数可以设置不同的透明度

日韩决裂,半导体谁最受伤?

来源: 半导体行业观察日本政府于7月1日公布,要加强对韩国的出口管理,7月4日发起了“氟化聚酰亚胺(Polymide)”、“EUV Resist(光阻剂)”、“氟化氢”三种半导体材料的出口限制。根据此次出口限制…

验证码随机生成

验证码随机生成 这里主要使用到的库是captcha库,下载的命令如下: pip install captcha 验证码随机生成代码,(python 版本:3.6 captcha 版本:0.3) from captcha.image import ImageCaptcha import numpy as np …

oracle的基本数据类型(转载)

数据类型是在设计表结构中需要定义的,选择适当的数据类型可以节省存储空间,提高运算效率。 Oracle数据类型主要包括 1.字符型 适合保存字符串类型的数据,如姓名、地址、简介等等。 如:char(2000),nchar(2000),varchar(4000),nvarc…

台式电脑麦克风_还有人买台式PC吗?这份新品推荐攻略值得收藏

【科技犬】新品一,联想发布新款天逸510S台式机联想现已推出天逸 510S 小型主机,搭载了英特尔最新的十代酷睿处理器 i5-10400,8GB 内存 512GB SSD 售价 3499 元。联想新款天逸 510S 将于 7 月 23 日开卖,适合企业办公用户使用。天…

MATLAB将两条曲线画在同一个图上

在MATLAB中将两条曲线画在同一个图上,如果直接采用下面的代码,那么画的第二个图会将第一个图覆盖 plot(x,p1,LineWidth,2); plot(x,p2,LineWidth,2); 正确的做法是在两条语句中间添加hold on; plot(x,p1,LineWidth,2); hold on; plot(x,p2,LineWidth,…

天基物联,毫瓦服务,商业航天撬动万亿市场

来源: 卫星与网络2019年8月17日12时11分,酒泉卫星发射中心,北京国电高科科技有限公司(以下简称“国电高科”)研制的天启沧州号(又名“忻中一号”)卫星由首次发射的捷龙一号商业火箭成功送入太空…

GitHub如何上传超过100MB的文件

GitHub如何上传超过100MB的文件 平时在GitHub上上传项目文件时,遇到比较大的文件,就会出现无法上传的情况: this exceeds GitHubs file size limit of 100.00 MB 解决方法如下: 在所要上传文件的目录下打开Git 首先,…

python的matplotlib生成colorbar

当有些画图的库不能生成colorbar时,需要手动生成colorbar:plt.colorbar(h),h为图的句柄 举个例子,mne.viz.plot_topomap函数不支持显示colorbar,因此需要通过matplotlib库来先设置colorbar再显示 im, cn mne.viz.pl…

学好基础,展翅飞翔

1 学习的东东 学习java基础,java虚拟机知识,计算机操作系统,计算机网络,数据结构和算法,Android基础。 然后Android项目实践。 锻炼好身体,注意养身,毕竟是革命的本钱。 锻炼好情商,…

电脑出货量_Q3季度全球笔记本电脑出货量增长34%,惠普出货量首次超过联想

相关推荐将联想拯救者电竞手机Pro关机,取出卡托,卡托上并没有硅胶圈。手机后盖与内支撑通过胶固定,热风枪加热....我快闭嘴 发表于11-17 16:40 •48次 阅读 联想来酷B2411/H产品出发点其实很简单,这款产品并不是为那些追求新奇&am…

人的智商到底有多高?

图片来源:verywell.com来源:生物谷人的智商到底有多高?来自慕尼黑大学的Markus Buhner教授表示,其实日常生活中我们认为的很多事实实际上或许都是误解,这里,研究人员对8种陈词滥调的有效性证据进行了权衡分…

解决问题:Couldn't open file: data/coco.names

错误:Couldn’t open file: data/coco.names darknet GitHub:https://github.com/pjreddie/darknet YOLO官网:https://pjreddie.com/darknet/yolo/ 在进行yolo效果测试时,出现了该错误。通过如下命令下载darknet: git…

1766 装果子

传送门 #include<cstdio> #define N 110000 long long n,m,sum0,ans,max0; long long a[N]; void find(long long l,long long r) {if (l>r) return;long long mid(lr)/2,s0,k0;for (int i1;i<n;i){sa[i];if (s>mid) k,sa[i];}if (s) k;if (k>m) find(mid1,r…

linux系统下codeblocks控制台打印中文乱码

linux系统下codeblocks控制台打印中文乱码 在linux下安装codeblocks后&#xff0c;打印中文出现如下问题&#xff1a; #include <stdio.h> #include <stdlib.h>int main() {printf("你好&#xff0c;世界&#xff01;\n");return 0; } 解决办法 1、将…

db2时间格式化为时间到时分秒_快捷指令为 iPhone 手机照片添加时间水印

安卓手机用户&#xff0c;自带的相机一般都有花样繁多的水印功能&#xff0c;可以将当前使用的手机型号、日期时间、品牌等信息以水印形式添加到照片。而苹果手机自带的相机应用可设置的功能较少&#xff0c;不过&#xff0c;苹果系统自带的“快捷指令”应用扩展功能非常强&…

深度学习仍是视觉大数据领域的最好分析方法之一

在这个数据为王的时代&#xff0c;深度学习擅于发掘多维数据中错综复杂的关系。基于大数据的深度学习算法在计算机视觉、自然语言处理以及信息检索等多个领域不断刷新着记录。来源&#xff1a; AI科技评论AI 科技评论注&#xff1a;本文作者为中国科学院信息工程研究所张晓宇副…

matplotlib调节colorbar的大小

调节plt.colorbar的fraction系数即可调节colorbar的大小 weight np.random.random([8, 8]) plt.imshow(weight) plt.colorbar(fraction0.05, pad0.05) plt.savefig(tjn.png, bbox_inchestight) plt.show()

多线程的单元测试工具 - GroboUtils

写过Junit单元测试的同学应该会有感觉&#xff0c;Junit本身是不支持普通的多线程测试的&#xff0c;这是因为Junit的底层实现上&#xff0c;是用System.exit退出用例执行的。JVM都终止了&#xff0c;在测试线程启动的其他线程自然也无法执行。JunitCore代码如下&#xff1a; /…