热门标签 | 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]



推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文讨论了如何使用GStreamer来删除H264格式视频文件中的中间部分,而不需要进行重编码。作者提出了使用gst_element_seek(...)函数来实现这个目标的思路,并提到遇到了一个解决不了的BUG。文章还列举了8个解决方案,希望能够得到更好的思路。 ... [详细]
  • 使用Spring AOP实现切面编程的步骤和注意事项
    本文介绍了使用Spring AOP实现切面编程的步骤和注意事项。首先解释了@EnableAspectJAutoProxy、@Aspect、@Pointcut等注解的作用,并介绍了实现AOP功能的方法。然后详细介绍了创建切面、编写测试代码的过程,并展示了测试结果。接着讲解了关于环绕通知的使用方法,并修改了FirstTangent类以添加环绕通知方法。最后介绍了利用AOP拦截注解的方法,只需修改全局切入点即可实现。使用Spring AOP进行切面编程可以方便地实现对代码的增强和拦截。 ... [详细]
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • 关于如何快速定义自己的数据集,可以参考我的前一篇文章PyTorch中快速加载自定义数据(入门)_晨曦473的博客-CSDN博客刚开始学习P ... [详细]
  • 语义分割系列3SegNet(pytorch实现)
    SegNet手稿最早是在2015年12月投出,和FCN属于同时期作品。稍晚于FCN,既然属于后来者,又是与FCN同属于语义分割网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • Matlab 中的一些小技巧(2)
    1.Ctrl+D打开子程序  在MATLAB的Editor中,将输入光标放到一个子程序名称中间,然后按Ctrl+D可以打开该子函数的m文件。当然这个子程序要在路径列表中(或在当前工作路径中)。实际上 ... [详细]
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社区 版权所有