热门标签 | 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开发能力。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • 引号快捷键_首选项和设置——自定义快捷键
    3.3自定义快捷键(CustomizingHotkeys)ChemDraw快捷键由一个XML文件定义,我们可以根据自己的需要, ... [详细]
  • 关于如何快速定义自己的数据集,可以参考我的前一篇文章PyTorch中快速加载自定义数据(入门)_晨曦473的博客-CSDN博客刚开始学习P ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
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社区 版权所有