tensorflow.keras常用模块介绍

news2024/12/24 8:58:55

目录

  • 前言
  • 一、基础层
    • 1-0、Input层
    • 1-1、Dense层
    • 1-2、Activation层(激活层)、Dropout层
    • 1-3、Lambda层
    • 1-4、Flatten层
  • 二、嵌入层
    • 2-1、Embedding层
  • 三、池化层
    • 3-1、MaxPooling1D层
    • 3-2、MaxPooling2D层
    • 3-3、AveragePooling1D层
    • 3-4、AveragePooling2D层
    • 3-5、GlobalMaxPooling1D层
    • 3-6、GlobalAveragePooling1D层
  • 总结


前言

最近的心情就像窗外的天气一样阴沉。。。

一、基础层

1-0、Input层

Input层:用来初始化一个keras张量。

# 常用参数解析
# 
1、shape:整型元组格式,表示输入数据的维度,比如shape=(32, )表示预期输入向量集合是32维的。不清楚输入维度时可以设置为None。
2、batch_size:整型,表示batch大小,批次大小
3、name:给这层网络取名,名字要有唯一性,默认None时系统会自动取名字
4、dype:输入的数据类型,可以是float32,float64,int32

1-1、Dense层

Dense层:Dense就是常用的全连接层,所实现的运算是 o u t p u t = a c t i v a t i o n ( d o t ( i n p u t , k e r n e l ) + b i a s ) output = activation(dot(input, kernel)+bias) output=activation(dot(input,kernel)+bias)其中activation是逐元素计算的激活函数,kernel是本层的权值矩阵,bias为偏置向量,dot表示点积运算,只有当use_bias=True才会添加。

tensorflow.keras.layers.Dense

1、units:大于0的整数,代表该层的输出维度。
2、activation:激活函数,为预定义的激活函数名(参考激活函数),或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x)
3、use_bias: 布尔值,是否使用偏置项
4、kernel_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers
5、bias_initializer:偏置向量初始化方法,为预定义初始化方法名的字符串,或用于初始化偏置向量的初始化器。参考initializers
6、kernel_regularizer:施加在权重上的正则项,为Regularizer对象
7、bias_regularizer:施加在偏置向量上的正则项,为Regularizer对象
8、activity_regularizer:施加在输出上的正则项,为Regularizer对象
9、kernel_constraints:施加在权重上的约束项,为Constraints对象
10、bias_constraints:施加在偏置上的约束项,为Constraints对象

输入
形如(batch_size, …, input_dim)的nD张量,最常见的情况为(batch_size, input_dim)的2D张量

输出
形如(batch_size, …, units)的nD张量,最常见的情况为(batch_size, units)的2D张量

实践代码

from tensorflow.keras.layers import Input, Bidirectional, Dense, Conv1D, LSTM, Flatten, Concatenate, Attention, GlobalAveragePooling1D, Embedding
from tensorflow.keras.models import Sequential

model  = Sequential()
# 这里代表的意思是输入数组的shape为(None, 16)。 输出数组为 shape=(None, 32),
model.add(Input(shape = (16, )))
model.add(Dense(32))
model.add(Dense(32))
model.compile(optimizer='Adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(), metrics='acc')
model.summary()

结果
在这里插入图片描述

1-2、Activation层(激活层)、Dropout层

Activation层: 激活函数,激活层对一个层的输出施加激活函数
常见预定义激活函数:softmax、elu、selu、softplus、relu、tanh、sigmoid、linear。

Dropout层: 为输入数据施加Dropout。Dropout将在训练过程中每次更新参数时按一定概率(rate)随机断开输入神经元,Dropout层用于防止过拟合。参数包括rate(断开神经元的比例)、seed(整数,即使用的随机种子)。

from tensorflow.keras.layers import Activation
from tensorflow.keras.layers import Input, Bidirectional, Dense, Conv1D, LSTM, Flatten, Concatenate, Attention, GlobalAveragePooling1D, Embedding
from tensorflow.keras.models import Sequential
import tensorflow as tf

model  = Sequential()
# 这里代表的意思是输入数组的shape为(None, 16)。 输出数组为 shape=(None, 32),
model.add(Input(shape = (16, )))
model.add(Dense(64, activation='tanh'))
model.compile(optimizer='Adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(), metrics='acc')
model.summary()

1-3、Lambda层

Lambda层: 自定义层最简单的方式就是通过Lambda层,即对上一层的输出进行任何自定义的函数操作

1、function:要实现的函数,该函数仅接受一个变量,即上一层的输出
2、output_shape:函数应该返回的值的shape,可以是一个tuple,也可以是一个根据输入shape计算输出shape的函数
3、mask: 掩膜
4、arguments:可选,字典,用来记录向函数中传递的其他关键字参数

1-4、Flatten层

Flatten层: Flatten层用来将输入“压平”,即把多维的输入一维化,常用在从卷积层到全连接层的过渡。Flatten不影响batch的大小。

from tensorflow.keras.layers import Activation
from tensorflow.keras.layers import Input, Bidirectional, Flatten,Dense, Conv1D, LSTM, Flatten, Concatenate, Attention, GlobalAveragePooling1D, Embedding
from tensorflow.keras.models import Sequential
import tensorflow as tf

model  = Sequential()
# 这里代表的意思是输入数组的shape为(None, 16)。 输出数组为 shape=(None, 32),
model.add(Input(shape = (16, )))
model.add(Dense(64, activation='tanh'))
model.add(Flatten())
model.compile(optimizer='Adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(), metrics='acc')
model.summary()

在这里插入图片描述

二、嵌入层

2-1、Embedding层

Embedding层:只能作为模型的第一层

参数:

1、input_dim:大或等于0的整数,字典长度,即输入数据最大下标+1
2、output_dim:大于0的整数,代表全连接嵌入的维度
3、embeddings_initializer: 嵌入矩阵的初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers
4、embeddings_regularizer: 嵌入矩阵的正则项,为Regularizer对象
5、embeddings_constraint: 嵌入矩阵的约束项,为Constraints对象
6、mask_zero:布尔值,确定是否将输入中的‘0’看作是应该被忽略的‘填充’(padding)值,该参数在使用递归层处理变长输入时有用。设置为True的话,模型中后续的层必须都支持masking,否则会抛出异常。如果该值为True,则下标0在字典中不可用,input_dim应设置为|vocabulary| + 17、input_length:当输入序列的长度固定时,该值为其长度。如果要在该层后接Flatten层,然后接Dense层,则必须指定该参数,否则Dense层的输出维度无法自动推断。

输入:
形如(samples,sequence_length)的2D张量

输出:
形如(samples, sequence_length, output_dim)的3D张量。(即将内部的每个变量扩展延升了)

实践代码

from tensorflow.keras.layers import Activation
from tensorflow.keras.layers import Input, Bidirectional, Flatten,Dense, Conv1D, LSTM, Flatten, Concatenate, Attention, GlobalAveragePooling1D, Embedding
from tensorflow.keras.models import Sequential
import tensorflow as tf

model = Sequential()
# 
model.add(Embedding(1000, 64, input_length=10))
# the model will take as input an integer matrix of size (batch, input_length).
# the largest integer (i.e. word index) in the input should be no larger than 999 (vocabulary size).
# now model.output_shape == (None, 10, 64), where None is the batch dimension.

input_array = np.random.randint(1000, size=(32, 10))

model.compile('rmsprop', 'mse')
model.summary()

结果
在这里插入图片描述

三、池化层

3-1、MaxPooling1D层

参数

1、pool_size:整数,池化窗口大小
2、strides:整数或None,下采样因子,例如设2将会使得输出shape为输入的一半,若为None则默认值为pool_size。
3、padding:‘valid’或者‘same’

输入shape
形如(samples,steps,features)的3D张量

输出shape
形如(samples,downsampled_steps,features)的3D张量

实践代码

from tensorflow.keras.layers import Input, Bidirectional, Dense, Conv1D, LSTM, Flatten, Concatenate, Attention, GlobalAveragePooling1D, Embedding,MaxPool1D,MaxPool2D,AveragePooling1D, AveragePooling2D,MaxPooling1D
from tensorflow.keras.models import Sequential

import tensorflow as tf

# demo1
x = tf.constant([1., 2., 3., 4., 5.])
x = tf.reshape(x, [1, 5, 1])

# 简单理解:最大池化是,滑动窗口大小为2,步长为1,没有填充。
max_pool_1d = MaxPooling1D(pool_size=2, strides=1, padding='valid')
print(max_pool_1d(x))  # shape = (1,4,1)  array=[[[2],[3],[4],[5]]]

# demo2
x = tf.constant([1., 2., 3., 4., 5.])
x = tf.reshape(x, [1, 5, 1])
max_pool_1d = MaxPooling1D(pool_size=2, strides=1, padding='same')
print(max_pool_1d(x))  # shape = (1,5,1)  array=[[[2],[3],[4],[5],[5]]]

输出
在这里插入图片描述

3-2、MaxPooling2D层

参数

pool_size:整数或长为2的整数tuple,代表在两个方向(竖直,水平)上的下采样因子,如取(22)将使图片在两个维度上均变为原长的一半。为整数意为各个维度值相同且为该数字。
strides:整数或长为2的整数tuple,或者None,步长值。
border_mode:‘valid’或者‘same’
data_format:字符串,“channels_first”或“channels_last”之一,代表图像的通道维的位置。该参数是Keras 1.x中的image_dim_ordering,“channels_last”对应原本的“tf”,“channels_first”对应原本的“th”。以128x128的RGB图像为例,“channels_first”应将数据组织为(3,128,128),而“channels_last”应将数据组织为(128,128,3)。该参数的默认值是~/.keras/keras.json中设置的值,若从未设置过,则为“channels_last”。

输入shape
‘channels_first’模式下,为形如(samples,channels, rows,cols)的4D张量
‘channels_last’模式下,为形如(samples,rows, cols,channels)的4D张量

输出shape
‘channels_first’模式下,为形如(samples,channels, pooled_rows, pooled_cols)的4D张量
‘channels_last’模式下,为形如(samples,pooled_rows, pooled_cols,channels)的4D张量

3-3、AveragePooling1D层

keras.layers.pooling.AveragePooling1D(pool_size=2, strides=None, padding=‘valid’)
对时域1D信号进行平均值池化

参数
pool_size:整数,池化窗口大小

strides:整数或None,下采样因子,例如设2将会使得输出shape为输入的一半,若为None则默认值为pool_size。

padding:‘valid’或者‘same’

输入shape
形如(samples,steps,features)的3D张量
输出shape
形如(samples,downsampled_steps,features)的3D张量

3-4、AveragePooling2D层

keras.layers.pooling.AveragePooling2D(pool_size=(2, 2), strides=None, padding=‘valid’, data_format=None)
为空域信号施加平均值池化

参数
pool_size:整数或长为2的整数tuple,代表在两个方向(竖直,水平)上的下采样因子,如取(22)将使图片在两个维度上均变为原长的一半。为整数意为各个维度值相同且为该数字。

strides:整数或长为2的整数tuple,或者None,步长值。

border_mode:‘valid’或者‘same’

data_format:字符串,“channels_first”或“channels_last”之一,代表图像的通道维的位置。该参数是Keras 1.x中的image_dim_ordering,“channels_last”对应原本的“tf”,“channels_first”对应原本的“th”。以128x128的RGB图像为例,“channels_first”应将数据组织为(3,128,128),而“channels_last”应将数据组织为(128,128,3)。该参数的默认值是~/.keras/keras.json中设置的值,若从未设置过,则为“channels_last”。

输入shape
‘channels_first’模式下,为形如(samples,channels, rows,cols)的4D张量

‘channels_last’模式下,为形如(samples,rows, cols,channels)的4D张量

输出shape
‘channels_first’模式下,为形如(samples,channels, pooled_rows, pooled_cols)的4D张量

‘channels_last’模式下,为形如(samples,pooled_rows, pooled_cols,channels)的4D张量

3-5、GlobalMaxPooling1D层

keras.layers.pooling.GlobalMaxPooling1D()
对于时间信号的全局最大池化

输入shape
形如(samples,steps,features)的3D张量
输出shape
形如(samples, features)的2D张量

3-6、GlobalAveragePooling1D层

keras.layers.pooling.GlobalAveragePooling1D()
为时域信号施加全局平均值池化

输入shape
形如(samples,steps,features)的3D张量
输出shape
形如(samples, features)的2D张量

参考文章:
keras.Layers官网.
tensorflow.keras.layer介绍.


总结

滴滴,您的被爱体验卡已到期,请问需要付费嘛?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/66683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android 组件化架构设计从原理到实战

为什么需要组件化 小项目是不需要组件化的。当一个项目有数十个人开发,编译项目要花费10分钟,修改一个bug就可能会影响到其他业务,小小的改动就需要进行回归测试,如果是这种项目,那么我们需要进行组件化了 组件化和模…

有效的渗透测试才能确保Web应用安全

应用程序的安全性和快速交付之间存在矛盾,但由于应用程序代码缺陷和安全漏洞,我们正在目睹或经历越来越多的攻击。据调查,软件安全漏洞占了大约47%的安全事故。 与任何软件一样,Web应用程序也包含缺陷和错误。这种安全风险的一个…

[附源码]Python计算机毕业设计Django物品捎带系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

SAP PS 第9节 合并采购申请、组合WBS之详解

SAP PS 第9节 合并采购申请、组合WBS之影响1 合并采购申请1.1 合并采购申请后台配置1.2 合并采购申请效果如下2 组合WBS2.1 后台配置2.1.1 激活需要分组的MRP组2.1.2 项目必须为有库存模式,无论估价或者未估价都可以2.1.3 物料必须允许项目库存(允许独立…

Azkaban登录分析

分析意义:目前azkaban采用的是azkaban-users.xml配置文件的方式,配置登录用户。如果公司需要二次开发,增加安全性和便捷性,想从数据库取值呢,该如何着手开发呢?本文分析登录过程,便于进行azkaban的二次登录开发。 1、登录请求地址,请求方式和参数 请求地址:http://x…

mysql创建子账户

1.首先登陆root账户 [roothecs-219255 ~]# mysql -uroot -p首先在Xshell客户端登陆linux,然后输入mysql命令进行登陆。 2.创建子账户 创建一个用户名为test1,密码为123456的子账号,有两种方法,分别为: CREATE USER …

【多目标进化优化】NSGAII 算法原理与代码实现

前言 Gitee 代码地址:https://gitee.com/futurelqh/Multi-objective-evolutionary-optimization 理论分析 \quad\quadSrinivas 和 Deb 于 1993 年提出 了 NSGA (non-dominated sorting in genetic algorithm) (Srinivas et al, 1994)。NSGA 主要有三个方面的不足&…

Docker:数据卷(Data Volumes)dockerfile

目录 一、宿主机与容器之间的文件拷贝 从容器中拷贝文件到宿主机 从宿主机拷贝文件到容器 二、数据卷 三、数据卷容器 四、Dockerfile 1、自定义centos,具备vim及ifconfig作用 2、自定义tomcat8 一、宿主机与容器之间的文件拷贝 备份我们已经装好的docker 等备…

隔离式DC/DC高压模块5V12V24V转50V110V250V300V380V600V1100V短路保护直流升压可调开关控制电源模块

特点 ● 效率高达 70%以上 ● 1*2英寸标准封装 ● 单电压输出 ● 价格低 ● 稳压输出 ● 工作温度: -40℃~85℃ ● 阻燃封装,满足UL94-V0 要求 ● 温度特性好 ● 可直接焊在PCB 上 应用 HRB W2~25W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&a…

Android databinding之数据单向与双向绑定详解与使用(三)

一、介绍 通过前面两篇文档,我们大概了解了databinding的工作方式,view的初始化,recycleview的使用。但是这些UI都离不开数据的填充,数据的修饰。 在说到数据绑定,好多开发者平时在工作中也经常听到databinding的数据…

https服务部署指南

1.概念 https服务的证书分布如下图: 客户端:CA证书 服务器:服务器证书,服务器密钥 2.证书生成&验证 2.1 证书生成 假设我们的域名为: www.contoso.com 创建CA私钥 openssl ecparam -out contoso.key -name p…

JMH基准测试工具 (一):介绍

在日常开发中,我们对一些代码的调用或者工具的使用会存在多种选择方式,在不确定他们性能的时候,我们首先想要做的就是去测量它。大多数时候,我们会简单的采用多次计数的方式来测量,来看这个方法的总耗时。 但是&#x…

串口通信扩展知识

在Android工控系统上,Android与硬件的通讯交互随处可见,其中串口通讯是最常用的通讯方式之一。 串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式…

扩散模型(Diffusion Model)原理与代码解析(一)

一、模型概览 扩散模型的灵感来自于非平衡热力学。定义了一个扩散步骤的马尔可夫链(当前状态只与上一时刻的状态有关),慢慢地向真实数据中添加随机噪声(前向过程),然后学习反向扩散过程(逆扩散…

python 图形界面“诈金花”游戏,更新了!附完整代码

旧版本的代码请见上一篇博文: python 从一道作业题到制作一个图形界面的“诈金花”游戏_Hann Yang的博客-CSDN博客Player1: (♥Q, ♣2, ♣8) - 单张Player2: (♦10, ♥7, ♠6) - 单张Player3: (♣4, ♠4, ♦2) - 对子Player4: (♠5, ♠9, ♥6) - 单张Player5: (♠…

SSM框架-SpringMVC(二)

目录 1 SpringMVC处理Ajax请求 1.1 RequestBody 1.2 RequestBody获取json格式的请求参数 1.3 ResponseBody 1.4、ResponseBody响应浏览器json数据 1.5 RestController注解 2 文件上传和下载 2.1 文件下载 2.2 上传文件 3 拦截器 3.1 拦截器的三个抽象方法 3.2 拦截器…

技术分享 | ClickHouse 冷热存储分离方案线上实践

作者:任坤 现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL、mongoDB 和 Redis 维护工作。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源…

母胎级教学,工业路由器远程维护PLC详细操作指南

1、前言随着工业4.0大力推进,对工业现场设备的稳定性提出了更高的要求,大多数的设备制造商不能持续监测及管理设备,因为现场设备分布比较分散,客户不能集中管理,如果通过视频或电话沟通问题,则准确度不够&a…

【安卓学习之常见问题】jar文件中Class转java文件不准(不同软件打开的class文件不一样)

█ jar文件中Class转java文件不准 █ 系列文章目录 提示:这里是收集了和文件分享有关的文章 【安卓学习之常见问题】android路径及文件问题 【安卓学习之常见问题】文件分享–文件不存在 【安卓学习之常见问题】自定义组件-刷新后跳到第一行 【安卓学习之常见问题…

K_A08_005 基于 STM32等单片机驱动XY-160D模块按键控制直流电机正反转加减速启停

目录 一、资源说明 二、基本参数 四、部分代码说明 接线说明 1、STC89C52RCXY-160D模块 2、STM32F103C8T6XY-160D模块 五、基础知识学习与相关资料下载 六、视频效果展示与程序资料获取 七、项目所有材料清单 八、注意事项 九、接线表格 一、资源说明 单片机型号 测试…