every blog every motto: Happiness is a way station between too much and too little.

0. 前言

实战深度神经网络,dropout

1. 代码部分

1. 导入模块

import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
from tensorflow import kerasprint(tf.__version__)
print(sys.version_info)
for module in mpl,np,pd,sklearn,tf,keras:print(module.__name__,module.__version__)

2. 读取数据

fashion_mnist = keras.datasets.fashion_mnist
# print(fashion_mnist)
(x_train_all,y_train_all),(x_test,y_test) = fashion_mnist.load_data()
x_valid,x_train = x_train_all[:5000],x_train_all[5000:]
y_valid,y_train = y_train_all[:5000],y_train_all[5000:]
# 打印格式
print(x_valid.shape,y_valid.shape)
print(x_train.shape,y_train.shape)
print(x_test.shape,y_test.shape)

3. 数据归一化

# 数据归一化
from sklearn.preprocessing import StandardScalerscaler = StandardScaler()
# x_train:[None,28,28] -> [None,784]
x_train_scaled = scaler.fit_transform(x_train.astype(np.float32).reshape(-1,1)).reshape(-1,28,28)
x_valid_scaled = scaler.transform(x_valid.astype(np.float32).reshape(-1,1)).reshape(-1,28,28)
x_test_scaled = scaler.transform(x_test.astype(np.float32).reshape(-1,1)).reshape(-1,28,28)

4. 构建模型

注意: 添加了dropout

# tf.keras.models.Sequential()
# 构建模型# 深度神经网络
model = keras.models.Sequential()
# 输入数据展平
model.add(keras.layers.Flatten(input_shape=[28,28]))
# 隐藏层 20层
for _ in range(20):model.add(keras.layers.Dense(100,activation="selu")) # 激活函数自带归一化model.add(keras.layers.AlphaDropout(rate=0.5))
# AlphaDropout:1. 均值和方差不变 2. 归一化性质也不变
# model.add(keras.layers.Dropout(rate=0.5))# 输出层
model.add(keras.layers.Dense(10,activation="softmax"))#
model.compile(loss='sparse_categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])
model.summary()

5. 训练

# 回调函数 Tensorboard(文件夹)\earylystopping\ModelCheckpoint(文件名)
logdir = os.path.join("dnn-selu-callbacks")
print(logdir)
if not os.path.exists(logdir):os.mkdir(logdir)
# 文件名
output_model_file = os.path.join(logdir,"fashion_mnist_model.h5")callbacks = [keras.callbacks.TensorBoard(logdir),keras.callbacks.ModelCheckpoint(output_model_file,save_best_only=True),keras.callbacks.EarlyStopping(patience=5,min_delta=1e-3),
]
# 开始训练
history = model.fit(x_train_scaled,y_train,epochs=10,validation_data=(x_valid_scaled,y_valid),callbacks=callbacks)

6. 学习曲线

# 画图
def plot_learning_curves(history):pd.DataFrame(history.history).plot(figsize=(8,5))plt.grid(True)plt.gca().set_ylim(0,1)plt.show()
plot_learning_curves(history)# 损失函数,刚开始下降慢的原因
# 1. 参数众多,训练不充分
# 2. 梯度消失 -》 链式法则中
# 解决: selu缓解梯度消失

7. 测试集上

model.evaluate(x_test_scaled,y_test)

8. 问题

model.add(keras.layers.AlphaDropout(rate=0.5))
 model.add(keras.layers.Dropout(rate=0.5))

注: AlphaDropout:1. 均值和方差不变 2. 归一化性质也不变

说人话:AlphaDropout更牛逼!!!!

从零基础入门Tensorflow2.0 ----一、3.4 实战深度神经网络(dropout)相关推荐

  1. 视频编码零基础入门(0):零基础,史上最通俗视频编码技术入门

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作 ...

  2. 黑客零基础入门教程:「黑客攻防实战从入门到精通(第二版)」堪称黑客入门天花板

    前言 您知道在每天上网时,有多少黑客正在浏览您计算机中的重要数据吗﹖黑客工具的肆意传播,使得即使是稍有点计算机基础的人,就可以使用简单的工具对网络中一些疏于防范的主机进行攻击,在入侵成功之后,对其中的 ...

  3. 0基础能学漫画么?漫画零基础入门教程!

    漫画零基础入门教程!很多人都喜欢看动漫,同时也会幻想成为动漫里的主角,与此同时也会诞生学漫画的想法.不论是你真的想学习漫画,又或出于个人爱好,或职业需要,或为了具备一项自己喜欢的看家本领.我们都要先清 ...

  4. 新版思科CCNA认证1.0 零基础入门技术VTP协议解析-ielab网络实验室

     新版思科CCNA认证1.0 零基础入门技术VTP协议解析-ielab网络实验室 VTP(VLAN Trunking Protocol):VLAN中继协议,是Cisco专用协议.也被称为虚拟局域网干道 ...

  5. 0基础学python难吗-零基础入门学习Python技术难不难?

    原标题:零基础入门学习Python技术难不难? 近几年对python人才爆发式需求,导致很多人转行进入python开发行业,现如今Python这门语言的就业前景会非常好.相对于其他来说,它语法简单易读 ...

  6. 零基础学python pdf-Python pdf(零基础入门学习Python)V1.0 最新版

    Python pdf(零基础入门学习Python)是一款功能强劲专业实用的Python电子书籍.想要零基础入门学习Python?那就快试试绿色先锋小编推荐的Python pdf最新版下载使用.由作者小 ...

  7. python 二进制流转图片_Python零基础入门到精通-5.1节:Python程序的执行过程

    教程引言: 系统地讲解计算机基础知识,Python的基础知识, 高级知识,web开发框架,爬虫开发,数据结构与算法,nginx, 系统架构.一步步地帮助你从入门到就业. 5.1.1 在命令行中执行Py ...

  8. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  9. 「建模调参」之零基础入门数据挖掘

    Datawhale 作者:徐韬 ,Datawhale优秀学习者 摘要:对于数据挖掘项目,本文将学习如何建模调参?从简单的模型开始,如何去建立一个模型:如何进行交叉验证:如何调节参数优化等. 建模调参: ...

  10. 「特征工程」之零基础入门数据挖掘

    Datawhale 作者:吴忠强,Datawhale优秀学习者 摘要:对于数据挖掘项目,本文将学习应该从哪些角度做特征工程?从哪些角度做数据清洗,如何对特征进行增删,如何使用PCA降维技术等. 特征工 ...

最新文章

  1. jupyter安装与初探
  2. wget指定目录下载以及其它的使用方式
  3. 日志中的秘密 Windows登录类型知多少?
  4. mysql join null_Mysql Join语法以及性能优化
  5. 编译hbase2.2.4+hadoop3.1.2
  6. qt 中文转十六进制_QT中16进制字符串转汉字
  7. mysql 5.6.17 x64 安装
  8. 互联网广告获客渠道有哪些?
  9. Atitit it领域知识点 划分 acm18知识树 目录 1. Acm总结的18个计算机科学关键领域 ACM知识树 1 1.1. 大学级别的计算机科学知识可以归纳成14个知识领域: 3 2. U
  10. java学生成绩管理系统源码
  11. 我在2016年读到的
  12. windows系统 cmd 下载python包的代理配置
  13. 什么是CDN,有何作用?
  14. USB 的UVC协议分析
  15. php 正则 零宽断言,正则表达式之零宽断言实例详解_正则表达式
  16. 微信公众号推广,选择哪一种类型文章产生共鸣
  17. python 字幕文件ass格式转换成srt格式
  18. 【RPO技巧拓展】————3、IIS和.Net应用程序中的非根相对路径覆盖(RPO)
  19. 计算机究竟还能火多久
  20. C语言指针类型的意义

热门文章

  1. java 图片特效_强大的Java图像滤镜特效类库Java Image Filters
  2. 苹果商城怎么调成中文_英雄联盟手游教程及问题反馈以及内部功能详解(苹果安卓都可以了)...
  3. 编程简单的计算机,计算机简单编程示例
  4. 牛顿法、梯度下降法原理及Python编程应用
  5. oracle管理员的作用,ORACLE数据库管理员的职责
  6. python快速写入hbase_Python 读写 hbase 数据的正确姿势(一)
  7. HTML:canvas画圆形加矩形组合
  8. Javascript特效:普通轮播图
  9. python 特征选择卡方_为什么pythonsklearn特征选择卡方(chi2)测试不是对称的?
  10. android倒计时的正确释放,Android 计时器和handler的正确使用方式