首页 > 编程语言 >Python keras

Python keras

时间:2023-04-01 16:14:18浏览次数:31  
标签:None keras Python channels 卷积 shape model

(一)to_categorical

说明:

简单来说,to_categorical就是将类别向量转换为二进制(只有0和1)的矩阵类型表示。其表现为将原有的类别向量转换为独热编码的形式。

例子:

from keras.utils.np_utils import *
#类别向量定义
b = [0,1,2,3,4,5,6,7,8]
#调用to_categorical将b按照9个类别来进行转换
b = to_categorical(b, 9)
print(b)
 
执行结果如下:
[[1. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 1. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 1. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 1. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 1. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 1. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 1.]]

to_categorical最为keras中提供的一个工具方法,从以上代码运行可以看出,将原来类别向量中的每个值都转换为矩阵里的一个行向量,从左到右依次是0,1,2,...8个类别。2表示为[0. 0. 1. 0. 0. 0. 0. 0. 0.],只有第3个为1,作为有效位,其余全部为0。

(二)Sequential

说明:

顺序模型是多个网络层的线性堆叠。

原型:

Sequential()

例子:

from keras.models import Sequential
from keras.layers import Dense, Activation

model = Sequential([
    Dense(32, input_shape=(784,)),
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
])

or

model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))

(三)Convolution2D

说明:

该层创建了一个卷积核, 该卷积核对层输入进行卷积, 以生成输出张量。 如果 use_bias 为 True, 则会创建一个偏置向量并将其添加到输出中。 最后,如果 activation 不是 None,它也会应用于输出。

当使用该层作为模型第一层时,需要提供 input_shape 参数 (整数元组,不包含样本表示的轴),例如, input_shape=(128, 128, 3) 表示 128x128 RGB 图像, 在 data_format="channels_last" 时。

原型:

keras.layers.Conv2D(
filters, #卷积核的数目(即输出的维度)
kernel_size, #卷积核的宽度和长度。
strides=(1, 1), #为卷积的步长。
padding='valid', #补0策略,为“valid”, “same” 。“valid”代表只进行有效的卷积,即对边界数据不处理。“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。
data_format=None, #激活函数。如果不指定该参数,将不会使用任何激活函数
dilation_rate=(1, 1), #指定dilated convolution中的膨胀比例。
activation=None, #字符串,“channels_first”或“channels_last”之一,代表图像的通道维的位置。“channels_last”对应原本的“tf”,“channels_first”对应原本的“th”。以128x128的RGB图像为例,“channels_first”应将数据组织为(3,128,128),而“channels_last”应将数据组织为(128,128,3)。该参数的默认值是~/.keras/keras.json中设置的值,若从未设置过,则为“channels_last”。
use_bias=True, #布尔值,是否使用偏置项
kernel_initializer='glorot_uniform',#权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。
bias_initializer='zeros', #权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器
kernel_regularizer=None, #施加在权重上的正则项,为Regularizer对象
bias_regularizer=None, #施加在偏置向量上的正则项,为Regularizer对象
activity_regularizer=None, #施加在输出上的正则项,为Regularizer对象
kernel_constraint=None, #施加在权重上的约束项,为Constraints对象
bias_constraint=None)#施加在偏置上的约束项,为Constraints对象

例子:

model.add(Convolution2D(
input_shape = (28,28,1),#当使用该层作为模型第一层时,需要提供 input_shape 参数 (整数元组,不包含样本表示的轴),
filters = 32,#卷积核的数目(即输出的维度)
kernel_size = 5,#卷积核的宽度和长度。
strides = 1,#为卷积的步长。
padding = 'same',#“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。
activation = 'relu'#激活函数。如果不指定该参数,将不会使用任何激活函数
))

(四)MaxPooling2D

说明:

对于空间数据的最大池化。

原型:

keras.layers.MaxPooling2D(
pool_size=(2, 2), #池化窗口大小
strides=None, #池化步长,默认值等于 pool_size
padding='valid', #VALID' 或 'SAME','VALID'表示无填充,'SAME'表示用0填充
data_format=None)#表示输入张量的维度顺序,默认为 [batch, height, width, channel]

例子:

model.add(MaxPooling2D(
pool_size = 2,#池化窗口大小
strides = 2,#池化步长,默认值等于 pool_size
padding = 'same',#'SAME'表示用0填充
))

(五)Flatten

说明:

将输入展平。不影响批量大小。

原型:

keras.layers.Flatten(
data_format=None)#data_format:一个字符串,其值为 channels_last(默认值)或者 channels_first。它表明输入的维度的顺序。

例子:

model = Sequential()
model.add(Conv2D(64, (3, 3),
                 input_shape=(3, 32, 32), padding='same',))
# 现在:model.output_shape == (None, 64, 32, 32)

model.add(Flatten())
# 现在:model.output_shape == (None, 65536)

(六)Dense

说明:

全连接层。

原型:

keras.layers.Dense(
units, #代表该层的输出维度或神经元个数,
activation=None, #激活函数.但是默认 liner
use_bias=True, #布尔值,该层是否使用偏置向量b
kernel_initializer='glorot_uniform', #初始化w权重 
bias_initializer='zeros', #初始化b权重 
kernel_regularizer=None, #施加在权重w上的正则项
bias_regularizer=None, #施加在偏置向量b上的正则项 
activity_regularizer=None, #施加在输出上的正则项 
kernel_constraint=None, #施加在权重w上的约束项
bias_constraint=None)#施加在偏置b上的约束项

例子:

# 作为 Sequential 模型的第一层
model = Sequential()
model.add(Dense(32, input_shape=(16,)))
# 现在模型就会以尺寸为 (*, 16) 的数组作为输入,
# 其输出数组的尺寸为 (*, 32)

# 在第一层之后,你就不再需要指定输入的尺寸了:
model.add(Dense(32))

(七)Dropout

说明:

Dropout 包括在训练中每次更新时, 将输入单元的按比率随机设置为 0, 这有助于防止过拟合。

原型:

keras.layers.Dropout(
rate, #在 0 和 1 之间浮动。需要丢弃的输入比例。
noise_shape=None, #1D 整数张量, 表示将与输入相乘的二进制 dropout 掩层的形状。
seed=None)#一个作为随机种子的 Python 整数。

例子:

model.add(Dropout(0.5))

(八)优化器Adam 

说明:

Adam 优化器。

默认参数遵循原论文中提供的值。

原型:

keras.optimizers.Adam(
lr=0.001, #学习率
beta_1=0.9, # 0到1之间,一般接近于1
beta_2=0.999, #0到1之间,一般接近于1,和beta_1一样,使用默认的就好
epsilon=None, #模糊因子,如果为空,默认为k.epsilon()
decay=0.0, #每次参数更新后学习率的衰减值(每次更新时学习率下降)
amsgrad=False)#布尔型,是否使用AMSGrad变体

例子:

adam = Adam(learning_rate=1e-4)

(九)compile

说明:

用于配置训练模型。

原型:

compile(
optimizer, #字符串(优化器名)或者优化器实例。
loss=None, #字符串(目标函数名)或目标函数。 
metrics=None, #在训练和测试期间的模型评估标准。 通常你会使用 metrics = ['accuracy']。
loss_weights=None, #可选的指定标量系数(Python 浮点数)的列表或字典, 用以衡量损失函数对不同的模型输出的贡献。
sample_weight_mode=None, #如果你需要执行按时间步采样权重(2D 权重),请将其设置为 temporal。
weighted_metrics=None, # 在训练和测试期间,由 sample_weight 或 class_weight 评估和加权的度量标准列表。
target_tensors=None)#默认情况下,Keras 将为模型的目标创建一个占位符,在训练过程中将使用目标数据。

例子:

model.compile(optimizer=adam,loss='categorical_crossentropy',metrics=['accuracy'])

 

标签:None,keras,Python,channels,卷积,shape,model
From: https://www.cnblogs.com/imreW/p/17278763.html

相关文章

  • wxpython编写的GUI中显示gif图片的另一种方法
    当采用wx.adv.AnimationCtrl方法加载大尺寸gif图片出错的时候,就需要考虑用其他方式加载了;这里用到了imageio.v3和numpy配合加载gif图片。代码实例如下。注意的是,此代码并非gif加载全能的!当图片不规则还是会出现无法加载的情况(gif各帧之间大小不一,具体原因搞不懂);而且加载的gif图......
  • Python学习笔记
    importthisprint("helloworld!")s1="bai"s2="lin!"s=f"{s1}{s2}"#f是format的意思,后面的s1,s2会把值复制到中括号内生成一个新的字符串print(s.title())#每个字母的开头大写a=2b=3print(a**b)#a**b表示a的b次方x,y,z,=1,2,3print(x,y,z......
  • Python Web简历网站开发
    1.搭建环境: -安装Python、Django、Vue开发环境2.配置环境: -配置Django项目架构,安装并配置Vue-cli以便使用Vue来实现前端功能3.页面设计: -主页面:包含网站首页、用户登录注册、管理中心等功能 -用户简历页面:提供简历创建、简历修改、简历分享等功能 -搜......
  • Python调用百度智能云接口实现车牌识别
    总述:1.登录百度智能云2.选择文字识别服务3.创建一个应用实例4.安装百度API接口5.填入参数6.调用1.登录百度智能云https://cloud.baidu.com/?from=console2.选择文字识别服务左边菜单栏--选择AI智能--文字识别服务(可以点收藏,下次就在左边快捷栏里了)  3.创建一......
  • 初学者关于下载安装python第三方库的两种常用方式
    一、利用PyCharm直接下载方式一:PyCharm是一个Python使用者常用的pythonIDE(集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以......
  • python学习-实现对比文件输出html
    在网络配置过程中,经常要对比两个配置文的差异,常用的一些文档编辑器带有文本对比的功能,如notepadd++,等。但是这些大部分都要收费或者安装其他插件,不是很友好,linux上自带diff可以对比,但是一般网工都linux不太熟悉。而且操蛋的是在客户都这里,给你的终端装了沙盒,禁止安装其他的文本的......
  • Python之路,Day12 - 那就做个堡垒机吧
    本节内容项目实战:运维堡垒机开发 1.前景介绍到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的功能属性中的其中一项而已,下面我就给大家介绍一下......
  • 【python基础】eval的使用
    前言开发的时候,遇到一个标注的json文件中多边形的框的表示,一时忘记不知道如何解析,此处主要使用eval函数,故记录之。json文件多边形框的描述"result":[{"tagtype":"circle_green","obstructed":false,"labelId"......
  • [oeasy]python0122_日韩字符_日文假名_JIS_Shift_韩国谚文
    日文假名和韩国谚文回忆上次内容上次回顾了非ascii的拉丁字符编码的进化过程0-127是ascii的领域 世界各地编码分布拉丁字符扩展ascii共16种由iso组织制定从iso-8859-1到iso-8859-16 无法同时显示俄文和法文  此......
  • [1]Python基础语法-【12】模块导入
    模块是Python中的一种重要组件,它可以让你将代码分割成更小、更易于维护和重复使用的部分。在Python中,你可以使用import语句将模块导入到你的代码中。本篇文章将详细介绍Python中的模块导入。模块的定义在Python中,模块是一组相关的函数、类和变量的集合,它们通常被存储在单......