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



推荐阅读
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ... [详细]
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
  • 卷积神经网络(CNN)基础理论与架构解析
    本文介绍了卷积神经网络(CNN)的基本概念、常见结构及其各层的功能。重点讨论了LeNet-5、AlexNet、ZFNet、VGGNet和ResNet等经典模型,并详细解释了输入层、卷积层、激活层、池化层和全连接层的工作原理及优化方法。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 历经三十年的开发,Mathematica 已成为技术计算领域的标杆,为全球的技术创新者、教育工作者、学生及其他用户提供了一个领先的计算平台。最新版本 Mathematica 12.3.1 增加了多项核心语言、数学计算、可视化和图形处理的新功能。 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 本文介绍了如何利用TensorFlow框架构建一个简单的非线性回归模型。通过生成200个随机数据点进行训练,模型能够学习并预测这些数据点的非线性关系。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • ML学习笔记20210824分类算法模型选择与调优
    3.模型选择和调优3.1交叉验证定义目的为了让模型得精度更加可信3.2超参数搜索GridSearch对K值进行选择。k[1,2,3,4,5,6]循环遍历搜索。API参数1& ... [详细]
  • iOS绘制就是采集点,贝塞尔曲线得到形状,绘图上下文去渲染出来AsanaDrawsana图形库,设计的挺好他可以画多种图形, ... [详细]
  • 本文探讨了亚马逊Go如何通过技术创新推动零售业的发展,以及面临的市场和隐私挑战。同时,介绍了亚马逊最新的‘刷手支付’技术及其潜在影响。 ... [详细]
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社区 版权所有