热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

keras归一化激活函数dropout

激活函数:1.softmax函数在多分类中常用的激活函数,是基于逻辑回归的,常用在输出一层,将输出压缩在0~1之间,且保证所有元素和为1,表示输入值属于每个输出值的概率大小2、Si



激活函数:
1.softmax函数
在多分类中常用的激活函数,是基于逻辑回归的,常用在输出一层,将输出压缩在0~1之间,且保证所有元素和为1,表示输入值属于每个输出值的概率大小
2、Sigmoid函数





f


(


x


)


=



1



1


+




e






x







f(x)= \frac{1}{1+\\{e^{-x}}}


f(x)=1+e−x1​
3.tanh函数:
公式:
tanh(x)
4.relu函数
公式:
f(x)=max(0,x)
5.Leaky Relu函数
公式:





{







x


,







x>=0











e


x






1



,








x


<


0








\begin{cases} x, & \text {x>=0} \\ {e^x-1} ,&x<0\end{cases}


{x,ex−1,​x>=0x<0​

归一化:
把输入数据做一个规整,使得其均值为0,方差为1
Min-max归一化: x=(x-min)/(max-min)
Z-score归一化: x=(x-u)/a

import matplotlib as mpl #导入具有画图功能的库
import matplotlib.pyplot as plt #matplotlib的子类 一个有命令风格的函数集合
%matplotlib inline
import numpy as np #是Python的一种开源的数值计算扩展 用于处理矩阵
import pandas as pd
import os
import sys
import time
import sklearn
import tensorflow as tf
from tensorflow import keras #从tensorflow中引入keras
#打印版本
print(tf.__version__)
print(sys.version_info)
for module in mpl,np,pd,tf,keras,sklearn:
print(module.__name__,module.__version__)
fashion_mnist =tf.keras.datasets.fashion_mnist
# fashion_mnist =fashion_mn.load_data() #从keras中导入数据
#将训练集和测试集拆分出来
(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:] #前5000张数据集作为验证集 将后5000张作为训练集
#y同理做相同操作
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)
#做数据归一化
#x=(x-u) /std (u是均值 std是方差)
from sklearn.preprocessing import StandardScaler # StandardScaler 作用:去均值和方差归一化。且是针对每一个特征维度来做的,而不是针对样本。
scaler = StandardScaler()
#x_train:[None,28,28] (三维矩阵) -->[None,784](转化为二维数据)
x_train_scaled=scaler.fit_transform( #对训练集做归一化 fit_transform(trainData)对部分数据先拟合fit,找到该part的整体指标,如均值、方差、最大值最小值等等(根据具体转换的目的),然后对该trainData进行转换transform,从而实现数据的标准化、归一化等等
x_train.astype(np.float32).reshape(-1,1) #astype() 修改数据类型
).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)
#模型创建
#tf.keras.models.Sequential()
#Sequential()方法是一个容器,描述了神经网络的网络结构,在Sequential()的输入参数中描述从输入层到输出层的网络结构
model=keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape=[28,28]))
for _ in range(20):#定义了20层的神经网络
model.add(keras.layers.Dense(100,activation='selu')) #selu:自带归一化功能的函数
#AlphaDropout:1、均值和方差不变 2、归一化的性质也不变
model.add(keras.layers.AlphaDropout(rate=0.5)) #0.5的时候 子网数目最大
model.add(keras.layers.Dropout(rate=0.5))
model.add(keras.layers.Dense(10,activation="softmax")) #softmax: 将向量变成概率分布 x=[x1,x2,x3], y=[e^x1/sum,e^x2/sum,e^x3/sum] sum=e^x1+e^x2+e^x3
# labels 是 one-hot 编码,用 categorical_crossentropy one-hot 编码: [[0, 1, 0],[1, 0, 0],[0, 0, 1]]
#tagets 是 数字编码 ,用 sparse_categorical_crossentropy y-index是数字编码
model.compile(loss="sparse_categorical_crossentropy",optimizer="sgd",metrics=["accuracy"]) #model.compile(optimizer=优化器,loss=损失函数,metrics=["准确率"])
model.summary()
#三个callback函数 Tensorboard earlystopping ModelCheckpoint
#Tensorboard需要一个文件夹 ModelCheckpoint需要一个文件名
logdir='./dnn-bn-backs'
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),#TensorBoard是一个可视化工具,它可以用来展示网络图、张量的指标变化、张量的分布情况
keras.callbacks.ModelCheckpoint(output_model_file,save_best_Only='True'),
keras.callbacks.EarlyStopping(patience=5,min_delta=1e-3)
#min_delta:阈值:这次训练和上次训练的差距是不是比这个阈值要低,要高的话就不用EarlyStopping,否则就要提前停止掉,patience:当差距比min_delta连续多少次小的时候关闭掉
]
callbacks=[]
history=model.fit(x_train_scaled,y_train,epochs=10,
validation_data=(x_valid_scaled,y_valid),
callbacks=callbacks
)#训练集遍历10次
#将值的变化过程 用图形输出出来
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)
model.evaluate(x_test_scaled,y_test)

运行结果:
在这里插入图片描述
[0.6382496953010559, 0.8701000213623047]



推荐阅读
  • 深入解析Hadoop的核心组件与工作原理
    本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ... [详细]
  • 本文探讨了使用Filter作为控制器的优势,以及Servlet与Filter之间的主要差异。同时,详细解析了Servlet的工作流程及其生命周期,以及ServletConfig与ServletContext的区别与应用场景。 ... [详细]
  • 丽江客栈选择问题
    本文介绍了一道经典的算法题,题目涉及在丽江河边的n家特色客栈中选择住宿方案。两位游客希望住在色调相同的两家客栈,并在晚上选择一家最低消费不超过p元的咖啡店小聚。我们将详细探讨如何计算满足条件的住宿方案总数。 ... [详细]
  • 本教程详细介绍了如何使用 TensorFlow 2.0 构建和训练多层感知机(MLP)网络,涵盖回归和分类任务。通过具体示例和代码实现,帮助初学者快速掌握 TensorFlow 的核心概念和操作。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 本文介绍如何使用MFC和ADO技术调用SQL Server中的存储过程,以查询指定小区在特定时间段内的通话统计数据。通过用户界面选择小区ID、开始时间和结束时间,系统将计算并展示小时级的通话量、拥塞率及半速率通话比例。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 本文探讨如何利用Java反射技术来模拟Webwork框架中的URL解析过程。通过这一实践,读者可以更好地理解Webwork及其后续版本Struts2的工作原理,尤其是它们在MVC架构下的角色。 ... [详细]
  • 本文探讨了亚马逊Go如何通过技术创新推动零售业的发展,以及面临的市场和隐私挑战。同时,介绍了亚马逊最新的‘刷手支付’技术及其潜在影响。 ... [详细]
  • 利用Java与Tesseract-OCR实现数字识别
    本文深入探讨了如何利用Java语言结合Tesseract-OCR技术来实现图像中的数字识别功能,旨在为开发者提供详细的指导和实践案例。 ... [详细]
  • 回顾与学习是进步的阶梯。再次审视卷积神经网络(CNNs),我对之前不甚明了的概念有了更深的理解。本文旨在分享这些新的见解,并探讨CNNs在图像识别和自然语言处理等领域中的实际应用。 ... [详细]
author-avatar
独角式恋爱牛仔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有