import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
#载入数据
mnist = input_data.read_data_sets("MNIST_data",one_hot = True)#定义每个批次的大小
batch_size = 100
#计算一共有多少个批次
n_batch = mnist.train.num_examples//batch_size#定义2个placeholder
x = tf.placeholder(tf.float32,[None,784])
y = tf.placeholder(tf.float32,[None,10])
keep_prob = tf.placeholder(tf.float32) #表示有百分之多少的神经元工作#神经网络:
#正态分布,方差0.1
W1 = tf.Variable(tf.truncated_normal([784,2000],stddev=0.1))
b1 = tf.Variable(tf.zeros([2000])+0.1)
L1 = tf.nn.tanh(tf.matmul(x,W1)+b1)
L1_drop_out = tf.nn.dropout(L1,keep_prob)W2 = tf.Variable(tf.truncated_normal([2000,2000],stddev=0.1))
b2 = tf.Variable(tf.zeros([2000])+0.1)
L2 = tf.nn.tanh(tf.matmul(L1_drop_out,W2)+b2)
L2_drop_out = tf.nn.dropout(L2,keep_prob)W3 = tf.Variable(tf.truncated_normal([2000,1000],stddev=0.1))
b3 = tf.Variable(tf.zeros([1000])+0.1)
L3 = tf.nn.tanh(tf.matmul(L2_drop_out,W3)+b3)
L3_drop_out = tf.nn.dropout(L3,keep_prob)W4 = tf.Variable(tf.truncated_normal([1000,10],stddev=0.1))
b4 = tf.Variable(tf.zeros([10])+0.1)
prediction = tf.nn.softmax(tf.matmul(L3_drop_out,W4)+b4)#二次代价函数:
# loss = tf.reduce_mean(tf.square(y-prediction))
#对数似然函数
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels= y,logits= prediction)) #梯度下降
train_step = tf.train.GradientDescentOptimizer(0.2).minimize(loss)#初始化变量
init = tf.global_variables_initializer()#求准确率
#比较预测值最大标签位置与真实值最大标签位置是否相等
correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))
#求准去率
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))with tf.Session() as sess:sess.run(init)for epoch in range(31):for batch in range(n_batch):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.7})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,y:mnist.train.labels,keep_prob:1.0})print("Iter"+str(epoch+1)+",Testing accuracy-"+str(test_acc)+",Train accuracy-"+str(train_acc))

  

keep_prob = 1.0时

Iter1,Testing accuracy-0.944,Train accuracy-0.958545
Iter2,Testing accuracy-0.958,Train accuracy-0.974691
Iter3,Testing accuracy-0.9621,Train accuracy-0.982855
Iter4,Testing accuracy-0.9652,Train accuracy-0.986455
Iter5,Testing accuracy-0.968,Train accuracy-0.988364
Iter6,Testing accuracy-0.9683,Train accuracy-0.989855
Iter7,Testing accuracy-0.9694,Train accuracy-0.990982
Iter8,Testing accuracy-0.9687,Train accuracy-0.991636
Iter9,Testing accuracy-0.9691,Train accuracy-0.992255
Iter10,Testing accuracy-0.9697,Train accuracy-0.9926
Iter11,Testing accuracy-0.9697,Train accuracy-0.992909
Iter12,Testing accuracy-0.9705,Train accuracy-0.993236
Iter13,Testing accuracy-0.9701,Train accuracy-0.993309
Iter14,Testing accuracy-0.9707,Train accuracy-0.993527
Iter15,Testing accuracy-0.9705,Train accuracy-0.993691
Iter16,Testing accuracy-0.9709,Train accuracy-0.993891
Iter17,Testing accuracy-0.9707,Train accuracy-0.993982
Iter18,Testing accuracy-0.9716,Train accuracy-0.994036
Iter19,Testing accuracy-0.9717,Train accuracy-0.994236
Iter20,Testing accuracy-0.9722,Train accuracy-0.994364
Iter21,Testing accuracy-0.9716,Train accuracy-0.994436
Iter22,Testing accuracy-0.972,Train accuracy-0.994509
Iter23,Testing accuracy-0.9722,Train accuracy-0.9946
Iter24,Testing accuracy-0.972,Train accuracy-0.994636
Iter25,Testing accuracy-0.9723,Train accuracy-0.994709
Iter26,Testing accuracy-0.9723,Train accuracy-0.994836
Iter27,Testing accuracy-0.9722,Train accuracy-0.994891
Iter28,Testing accuracy-0.9727,Train accuracy-0.994964
Iter29,Testing accuracy-0.9724,Train accuracy-0.995091
Iter30,Testing accuracy-0.9725,Train accuracy-0.995164
Iter31,Testing accuracy-0.9725,Train accuracy-0.995182

keep_prob = 0.7时
Iter1,Testing accuracy-0.9187,Train accuracy-0.912709
Iter2,Testing accuracy-0.9281,Train accuracy-0.923782
Iter3,Testing accuracy-0.9357,Train accuracy-0.935236
Iter4,Testing accuracy-0.9379,Train accuracy-0.940855
Iter5,Testing accuracy-0.9441,Train accuracy-0.944564
Iter6,Testing accuracy-0.9463,Train accuracy-0.948164
Iter7,Testing accuracy-0.9472,Train accuracy-0.950182
Iter8,Testing accuracy-0.9515,Train accuracy-0.9544
Iter9,Testing accuracy-0.9548,Train accuracy-0.956455
Iter10,Testing accuracy-0.9551,Train accuracy-0.959091
Iter11,Testing accuracy-0.9566,Train accuracy-0.959891
Iter12,Testing accuracy-0.9594,Train accuracy-0.962036
Iter13,Testing accuracy-0.9592,Train accuracy-0.964236
Iter14,Testing accuracy-0.9585,Train accuracy-0.964818
Iter15,Testing accuracy-0.9607,Train accuracy-0.966
Iter16,Testing accuracy-0.961,Train accuracy-0.9668
Iter17,Testing accuracy-0.9612,Train accuracy-0.967891
Iter18,Testing accuracy-0.9643,Train accuracy-0.969236
Iter19,Testing accuracy-0.9646,Train accuracy-0.969945
Iter20,Testing accuracy-0.9655,Train accuracy-0.970909
Iter21,Testing accuracy-0.9656,Train accuracy-0.971509
Iter22,Testing accuracy-0.9668,Train accuracy-0.972891
Iter23,Testing accuracy-0.9665,Train accuracy-0.972982
Iter24,Testing accuracy-0.9687,Train accuracy-0.974091
Iter25,Testing accuracy-0.9673,Train accuracy-0.974782
Iter26,Testing accuracy-0.9682,Train accuracy-0.975127
Iter27,Testing accuracy-0.9682,Train accuracy-0.976055
Iter28,Testing accuracy-0.9703,Train accuracy-0.976582
Iter29,Testing accuracy-0.9692,Train accuracy-0.976982
Iter30,Testing accuracy-0.9707,Train accuracy-0.977891
Iter31,Testing accuracy-0.9703,Train accuracy-0.978091

可以看到,当drop-out了30%的时候,训练集与测试集的准确率相差比全连接要小一些,可以防止过拟合的情况出现。

转载于:https://www.cnblogs.com/Mjerry/p/9828102.html

004-2-拟合,drop-out相关推荐

  1. 水果识别 python paddlepaddle 人工智能

    第三篇文章 数字图像处理的一个结课作业,技术上就是搭建一个深度学习网络,训练出模型,保存模型,调用模型实现预测 其实,程序的代码也是,我在bilibili上面通过观看教学视频一个一个敲出来的,所用的编 ...

  2. 详解 | Dropout为何能防止过拟合?

    作者 | 张雨石 开篇明义,dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃.注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-b ...

  3. 高维多元数据拟合回归如何进行???

    一.高维多元数据非线性/线性拟合: Matlab绘制三维空间网格散点图,使用cftool工具箱实现三维空间绘图.cftool工具箱是应用程序中的Curve Fitting应用.选择拟合曲线的类型,工具 ...

  4. 过拟合的原因以及解决办法(深度学习)

    过拟合:模型在训练集上表现的非常好,但在测试集的数据下表现很差. 具体观察loss函数就是,train loss一直降低,而test loss先降低,而后随着epoach的增加,而不断增加. 这张图可 ...

  5. python散点图拟合曲线-python散点图拟合

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 下面是我在文本文件中绘制数据散点图的代码. 我打开的文件包含两列. 左列为x坐标 ...

  6. 【机器学习】一文深层解决模型过拟合

    一.过拟合的本质及现象 过拟合是指模型只过分地匹配特定训练数据集,以至于对训练集外数据无良好地拟合及预测.其本质原因是模型从训练数据中学习到了一些统计噪声,即这部分信息仅是局部数据的统计规律,该信息没 ...

  7. 深度学习过拟合解决方案

    本文转自:https://blog.csdn.net/zhang2010hao/article/details/89339327 1.29.深度学习过拟合解决方案 1.29.1.解决方案 对于深度学习 ...

  8. 31,32,33_过拟合、欠拟合的概念、L2正则化,Pytorch过拟合欠拟合,交叉验证-Train-Val-Test划分,划分训练集和测试集,K-fold,Regularization

    1.26.过拟合.欠拟合及其解决方案 1.26.1.过拟合.欠拟合的概念 1.26.1.1.训练误差和泛化误差 1.26.1.2.验证数据集与K-fold验证 1.26.1.3.过拟合和欠拟合 1.2 ...

  9. TensorFlow之tf.nn.dropout():防止模型训练过程中的过拟合问题

    一:适用范围: tf.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的函数,它一般用在全连接层 二:原理: dropout就是在不同的训练过程中随机扔掉一部分神经元.也就是让 ...

  10. 神经网络Drop大法真香定律

    drop方法从一开始提出的时候,就用来当作正则化使用,提升模型的鲁棒性.近年来drop方法被玩出花来,drop方法有两种明显的趋势: 随机drop-> 自适应drop 像素级drop -> ...

最新文章

  1. javascript创建对象的三种方式
  2. php的filter input,记一个php://filter和php://input的CTF题
  3. sqlserver字符串分割
  4. 把对方陷入困境中(博弈论的诡计)
  5. 慕尼黑大学公开课 Competitive Strategy(竞争策略)总结
  6. 计算机应用基础是文管二级吗,计算机应用基础(文管二级)习题册.doc
  7. 造车之心不死?苹果已与至少四家公司进行谈判
  8. ionic获取手机通讯录
  9. kafka 脚本发送_Apache-Flink深度解析-DataStream-Connectors之Kafka
  10. BIO,Socket网络编程入门代码示例,NIO网络编程入门代码示例,AIO 网络编程
  11. 转载~final, static和 nested class 总结 原文~http://yulin10.bokee.com/2544792.html
  12. TED如何和压力做朋友(第三天)
  13. MAC安装Charles破解版简易教程
  14. 三.卡尔曼滤波器(EKF)开发实践之三: 基于三个传感器的海拔高度数据融合
  15. RS232/RS485转4G DTU 上传基于Modbus协议的温湿度传感器数据到远程TCP服务器
  16. stripe 海外支付
  17. JavaScript 移动端点击事件延迟问题
  18. 插入(希尔)排序时间、空间复杂度
  19. 包含头文件使用 书名号与双引号的区别(直接打符号竟然发表不了,太难了)
  20. 政行为导致合同不能履行,违约方是否要承担民事违约

热门文章

  1. Mozilla网站安全分析工具Observatory已发布
  2. 怎样用ABBYY FineReader中的电子邮件发送OCR结果
  3. 应用程序正常初始化(0xc0000135)失败的解决方法
  4. business man
  5. C#一种最简单实用安全的单例模式,也是线程安全的
  6. U3D 动态创建Prefab的多个实例
  7. 从0到1学习Vue.js,包含例子及实战项目(三)
  8. 如何判断线程运行结束
  9. [LUOGU] P4342 [IOI1998]Polygon
  10. B-TrunC标准成功加入ITU集群国际标准