TensorFlow之双隐含层多层感知器(MLP)

2023-11-13

程序改自上一篇博客,使用了双隐含层,第二层隐含层初始w需要和第一层类似,否则程序正确率一直在0.1左右。修改后的程序正确率也在98%左右。

# -*- coding:utf-8 -*-
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf

# data
dir='/home/kaka/Documents/input_data'
mnist = input_data.read_data_sets(dir, one_hot=True)

# model
sess = tf.InteractiveSession()

hd1in_units = 784
hd1out_units = 500
hd2out_units = 300

w1 = tf.Variable(tf.truncated_normal([hd1in_units, hd1out_units], stddev=0.1))
b1 = tf.Variable(tf.zeros(hd1out_units))
# w2 = tf.Variable(tf.zeros([hd1out_units, hd2out_units]))
w2 = tf.Variable(tf.truncated_normal([hd1out_units, hd2out_units], stddev=0.1))
b2 = tf.Variable(tf.zeros([hd2out_units]))
w3 = tf.Variable(tf.zeros([hd2out_units, 10]))
b3 = tf.Variable(tf.zeros([10]))


x = tf.placeholder(tf.float32, [None, hd1in_units])

keep_prob = tf.placeholder(tf.float32)   # dropout proportion
hidden1 = tf.nn.relu(tf.matmul(x, w1) + b1)
hidden1_drop = tf.nn.dropout(hidden1, keep_prob)

hidden2 = tf.nn.relu(tf.matmul(hidden1_drop, w2) + b2)
hidden2_drop = tf.nn.dropout(hidden2, keep_prob)

y = tf.nn.softmax(tf.matmul(hidden2_drop, w3) + b3)

# loss
y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))

correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

train_step = tf.train.AdagradOptimizer(0.3).minimize(cross_entropy)
# train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

tf.global_variables_initializer().run()
for i in range(100000):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys, keep_prob: 0.8})
    if i % 100 == 0:
        train_accuracy = accuracy.eval(feed_dict={
            x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0})
        print('step %d, training accuracy %g' % (i, train_accuracy))

print(sess.run(accuracy, feed_dict={x: mnist.test.images,
                                    y_: mnist.test.labels,
                                    keep_prob: 1.0}))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TensorFlow之双隐含层多层感知器(MLP) 的相关文章

随机推荐

  • 3D模型地球

  • Kubernetes 灰度/滚动发布 滚动更新速率控制解读 maxUnavailable,maxSurge

    利用kubernetes的滚动更新时 可能经常遇到发布 太快不稳定 或 太慢体验差 的情况 本文将介绍kubernetes滚动更新控制速率的特性 金丝雀发布 金丝雀发布这个术语源自20世纪初期 当时英国的煤矿工人在下井采矿之前 会把笼养的金
  • Postman(2):form-data、x-www-form-urlencoded、raw、binary的区别

    postman中 form data x www form urlencoded raw binary的区别 QQ 851228082的博客 CSDN博客 www form urlencoded RequestBody的使用 justry
  • Angular: @NgModule

    第一部分 概览 declarations 属于这个模块的 component pipe directive 的列表 providers Provider 这个 imports Array
  • idea里面Mybatis的xml基础配置文件表名、字段、别名报红问题的解决!

    这里是因为我之前在idea里面设置了Hibernate的MySQL方言 导致Mybatis的xml基础配置文件表名 字段 别名疯狂报红 1 最终取消了idea里面MySql的方言设置之后 问题及解决了 idea操作步骤 file gt se
  • 鸿蒙关于读取手机文件操作

    1 申请读写权限 先在config json中申请 再使用JAVA代码动态申请 ohos permission READ USER STORAGE和ohos permission WRITE USER STORAGE 2 获取File对象
  • html页面回退 刷新,vue2.0页面前进刷新回退不刷新的实现方法

    这篇文章主要为大家详细介绍了vue2 0页面前进刷新回退不刷新的实现方法 具有一定的参考价值 可以用来参考一下 感兴趣的小伙伴 下面一起跟随512笔记的小编两巴掌来看看吧 花了整整一周时间 尝试过很多种方法 终于找到了最佳的解决方案 对我来
  • 使用分支——Git Checkout

    这篇文章写的挺好 https zhuanlan zhihu com p 465954849 这里要注意 git 新的命令 通过 git switch 切换分支 虽然git checkout 分支 还可以用 游离状态的HEADS 在我们已经见
  • pikachu靶场搭建以及搭建问题

    前言 pikachu是一个适合Web渗透测试学习的小白们进行训练的本地靶场 并且已经在github上开源了 它是一个综合性的靶场 非常适合新手练习 接下来就简单的看一下它如何在Windows上搭建吧 Apache与MySQL环境搭建 然后这
  • 如何判断合法标识符

    题目描述 给出一个标识符 请你判断它是否是C语言合法的标识符 输入 输入一个标识符 长度不超过100 输出 判断是否合法 如果是输出YES 否则输出NO 示例输入 123You 示例输出 NO 提示 C语言规定 标识符只能由字母 数字和下划
  • SSH 和 SSL 加密协议

    SSH和SSL都是加密协议 用于保护网络通信的安全性和完整性 但它们用途和实现方式有所不同 SSH Secure Shell 是一种网络协议 用于远程访问和管理服务器 它提供了加密的连接和认证机制 使得数据传输更加安全 SSH通常用于远程登
  • Linux下使用STM32CUBEMX的makefile,报multiple defination错误的解决办法

    之所以报这个错是因为stm32cubemx生成makefile的一个bug 在C SOURCES部分会重复添加Src 下的c文件 上图是没有修改makefile之前 下图为修改后 要修改的部分
  • pthon代码实现在linux下对siebel服务器换包重启

    siebel服务器的换包重启 需要输入多个命令 而且中间需要等待 经常停了服务忘了启动 之前项目的TA有写过一些shell脚本 启服务的 停服务的 包括自动换包重启的 但是因为里面有个mount目录经常出问题 所以平时也没有使用 最近刚好在
  • css基本语法

    1 background background image url image jpg background color ccf background position center background repeat no repeat
  • 数据库:什么是主键

    数据库主键 主键 表中经常有一个列或列的组合 其值能唯一地标识表中的每一行 通俗叫 一个表中只能有一个主键 不接受空值 能唯一的表示表中的每一行 例如 银行卡的卡号就是主键 不存在重复的情况
  • Java 数据类型转换(Casting)

    Java中 经常可以遇到类型转换的场景 从变量的定义到复制 数值变量的计算到方法的参数传递 基类与派生类间的造型等 随处可见类型转换的身影 Java中的类型转换在Java编码中具有重要的作用 本文主要介绍一下Java 数据类型转换 Cast
  • 华为防火墙默认密码是什么?

    华为默认密码是什么 分享至 小王邀请您加入牛B的IT关键业务推动者社区 点击领取12G的软考 PMP资料包 特训营名额 gt gt 售前工程师系列 教你写解决方案 gt gt ld11235813 荣誉会员 Rank 12Rank 12Ra
  • 华为动态pnat配置

  • 微软宣布IE9正式版发布日期

    微软上月曾透露会在3月14日于美国德克萨斯州奥斯汀市SXSW音乐电影节上举办一个庆祝派对 从那时起就有很多猜想 我们才曾猜测微软届时会正式发布IE9 今天 微软终于不再卖关子 3月14日 也就是下周一 微软将正式发布IE9 微软证实 美国太
  • TensorFlow之双隐含层多层感知器(MLP)

    程序改自上一篇博客 使用了双隐含层 第二层隐含层初始w需要和第一层类似 否则程序正确率一直在0 1左右 修改后的程序正确率也在98 左右 coding utf 8 from tensorflow examples tutorials mni