TensorFlow 多层感知器

TensorFlow 多层感知器本文介绍如何使用 TensorFlow 对多层感知器进行编程

本文主要介绍使用TensorFlow对多层感知器(MLP)进行编程,其他内容参考:TensorFlow 学习目录。

目录

一、多层感知器MLP


一、多层感知器MLP

多层感知器不同于CNN,CNN提取的是局部特征,而且CNN训练的并不是feature,而是feature的特征过滤器,也就是Filter(Kernel),多层感知器隐藏层中的每一个神经元是上一层的全部神经元的权重配比,并不具有局部性,而是更加注重整体,所以相比于CNN,MLP的参数量是非常庞大的。在多层感知器这种结构下,H-ELM、ML-ELM对其进行训练的效果是比Back Propagation算法进行不断地迭代训练好很多的,而且更快,只要调一次参数,而BP算法要调到收敛,并需要注意过拟合。

import tensorflow as tf import numpy as np import get_Dataset x_train, y_train, x_test, y_test = get_Dataset.get_Dataset(name='mnist') inputs = tf.placeholder(dtype=tf.float32, shape=[None, 784], name='inputs') labels = tf.placeholder(dtype=tf.float32, shape=[None, 10], name='labels') pre_labels = tf.placeholder(dtype=tf.int64, shape=[None], name='pre_labels') def fully_connected(x, size): len_x = int(x.get_shape()[1]) w = tf.Variable(tf.random_normal(shape=[len_x, size], stddev=0.1), dtype=tf.float32) b = tf.Variable(tf.constant(0.0, dtype=tf.float32, shape=[size])) z = tf.nn.relu(tf.nn.xw_plus_b(x, w, b)) return z f1 = fully_connected(inputs, 520) f2 = fully_connected(f1, 200) logits = fully_connected(f2, 10) loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=labels)) optimizer = tf.train.AdamOptimizer(1e-4).minimize(loss) correct_pred = tf.equal(tf.argmax(logits, 1), pre_labels) acc = tf.reduce_mean(tf.cast(correct_pred, dtype=tf.float32)) epochs = 50 batch_size = 40 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for epoch in range(epochs): for batch in range(int(x_train.shape[0]/batch_size)): batchx = x_train[batch*batch_size: (batch+1)*batch_size] batchy = y_train[batch*batch_size: (batch+1)*batch_size] feed_dict={ inputs: batchx, labels: batchy } _ = sess.run(optimizer, feed_dict=feed_dict) Acc = sess.run(acc, feed_dict={inputs: x_test, pre_labels: y_test}) print ("Epoch ", epoch+1, "ACC = ", Acc) 

输出:

Epoch 1 ACC = 0.9402 Epoch 2 ACC = 0.9577 Epoch 3 ACC = 0.9649 Epoch 4 ACC = 0.9682 Epoch 5 ACC = 0.9709 Epoch 6 ACC = 0.972 Epoch 7 ACC = 0.9738 Epoch 8 ACC = 0.9756 Epoch 9 ACC = 0.9757 Epoch 10 ACC = 0.9762 Epoch 11 ACC = 0.9766 Epoch 12 ACC = 0.9759 Epoch 13 ACC = 0.9768 Epoch 14 ACC = 0.9765 Epoch 15 ACC = 0.9772 Epoch 16 ACC = 0.9773 Epoch 17 ACC = 0.9782 Epoch 18 ACC = 0.9773 Epoch 19 ACC = 0.9798 Epoch 20 ACC = 0.9781 Epoch 21 ACC = 0.9795 Epoch 22 ACC = 0.9745 Epoch 23 ACC = 0.9813 Epoch 24 ACC = 0.9806 Epoch 25 ACC = 0.9804 Epoch 26 ACC = 0.9804 Epoch 27 ACC = 0.9786 Epoch 28 ACC = 0.9811 Epoch 29 ACC = 0.9811 Epoch 30 ACC = 0.9808 Epoch 31 ACC = 0.981 Epoch 32 ACC = 0.9809 Epoch 33 ACC = 0.9807 Epoch 34 ACC = 0.9807 Epoch 35 ACC = 0.982 Epoch 36 ACC = 0.9819 Epoch 37 ACC = 0.9816 Epoch 38 ACC = 0.9817 Epoch 39 ACC = 0.9809 Epoch 40 ACC = 0.9749 Epoch 41 ACC = 0.981 Epoch 42 ACC = 0.981 Epoch 43 ACC = 0.9811 Epoch 44 ACC = 0.9815 Epoch 45 ACC = 0.9813 Epoch 46 ACC = 0.9808 Epoch 47 ACC = 0.9811 Epoch 48 ACC = 0.9817 Epoch 49 ACC = 0.9819 Epoch 50 ACC = 0.982

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177007.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午8:32
下一篇 2026年3月26日 下午8:32


相关推荐

  • linux+tar怎样解压zip文件内容,linux tar压缩解压文件[通俗易懂]

    linux+tar怎样解压zip文件内容,linux tar压缩解压文件[通俗易懂]时间:2016-08-30作者:admin阅读:次-c:建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。下面的参数-f是必须的-f:使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。#tar-cf…

    2022年5月9日
    111
  • UE4选不中半透明物体(半透明显示快捷键是啥)

    UE4开发时,会出现透明材质的物体显示不全的情况本文给出几种解决方式供各位参考

    2022年4月14日
    388
  • 2014年度工作总结

    2014年度工作总结虽然还有一段时间真正的变成中国人的2015年了,回首这2年的工作,时间一晃真的很快。转眼间到鼎峰已经2年了,这是我人生中弥足珍贵的一段经历。感谢,感恩鼎峰的每一个人,因为有你们我才能快速的成长积累,这2年有硕果累累的喜悦,有工作当中的艰辛,也有遇到困难和挫折时的惆怅。在项目可开发和处理问题的过程中,难题一个接一个的出现,自信心不止一次的受到过打击,虽然自己早就知道,要做到符合公司的要求,做一名合格

    2022年7月26日
    9
  • 算法系列之九:计算几何与图形学有关的几种常用算法(一)

    算法系列之九:计算几何与图形学有关的几种常用算法(一)我的专业是计算机辅助设计(CAD),算是一半机械一半软件,《计算机图形学》是必修课,也是我最喜欢的课程。热衷于用代码摆平一切的我几乎将这本教科书上的每种算法都实现了一遍,这种重复劳动虽然意义不大,但是收获很多,特别是丢弃了多年的数学又重新回到了脑袋中,算是最大的收获吧。尽管已经毕业多年了,但是每次回顾这些算法的代码,都觉得内心十分澎湃,如果换成现在的我,恐怕再也不会有动力去做这些事情了。

    2025年6月8日
    3
  • Hibernate5.0配置C3P0连接池步骤详解

    Hibernate5.0配置C3P0连接池步骤详解Hibernate5.0拥有自己的数据库连接池,但是无论性能和功能都不如C3P0(本人新手,查取资料得知),由于之前苦搜资源都不得愿,所以写下此篇文章以供像我一样苦于搜索的新手,以供参考。   Hibernate5.0整合C3P0实现连接池的步骤如下:   首先第一步   1).到https://sourceforge.net/projects/hibernate/到该网站

    2022年5月7日
    33
  • linux执行lsof命令_Linux lsof 命令

    linux执行lsof命令_Linux lsof 命令Linuxlsof 命令发布时间 2019 01 1608 52 浏览次数 841 标签 Linuxlsoflso listopenfile 是一个查看进程打开的文件的工具 在 linux 系统中 一切皆文件 通过文件不仅仅可以访问常规数据 还可以访问网络连接和硬件 所以 lsof 命令不仅可以查看进程打开的文件 目录 还可以查看进程监听的端口等 socket 相关的信息 本文将介绍

    2025年10月8日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号