学习笔记

学习心得

2021-5-25

目录

一.Keras主要模块
二.Adam优化器参数设置

1.优化器(optimizers)

可选择的优化器:sgd、RMSprop(适合递归神经网络)、Adagrad、Adadelta、Adam、Adamax、Nadam

2.损失函数(loss)

可以选择的损失函数有:mean_squared_error,mean_absolute_error,squared_hinge,hinge,binary_crossentropy,categorical_crossentropy

3.激活函数(activations)

可以选择的激活函数有:linear、sigmoid、hard_sigmoid、tanh、softplus、relu、 softplus,softmax、softsign、PReLU、LeakyReLU

4.参数初始化(Initializations)

初始化参数指的是在网络训练之前,对各个节点的权重和偏置进行初始化的过程。一个参数的初始化关系到网络能否训练出好的结果或者是以多快的速度收敛。
(1)通过调用对象的方法:
from keras import backend as K
import numpy as np

def my_init(shape, name=None):
value = np.random.random(shape)
return K.variable(value, name=name)

model.add(Dense(64, init=my_init))

或者

from keras import initializations

def my_init(shape, name=None):
return initializations.normal(shape, scale=0.01, name=name)

model.add(Dense(64, init=my_init))
该对象必须包含两个参数:shape(待初始化的变量的shape)和name(该变量的名字),该可调用对象必须返回一个(Keras)变量。例如K.variable()返回的就是这种变量。
(2)通过制定初始化方法的名称
示例:model.add(Dense(64, init=‘uniform’))
可以选择的初始化方法有:uniform、lecun_uniform、normal、orthogonal、zero、glorot_normal、he_normal等。

5.层(layer)

5.1对于层的操作
layer.get_weights() #返回该层的权重
layer.set_weights(weights) #将权重加载到该层
config = layer.get_config() #保存该层的配置
layer = layer_from_config(config) #加载一个配置到该层

#该层有一个节点时,获得输入张量、输出张量、及各自的形状:
layer.input
layer.output
layer.input_shape
layer.output_shape
#该层有多个节点时(node_index为节点序号):
layer.get_input_at(node_index)
layer.get_output_at(node_index)
layer.get_input_shape_at(node_index)
layer.get_output_shape_at(node_index)
5.2全连接层(Dense)
keras.layers.core.Dense(output_dim, init=’ ‘, activation=’ ‘, weights=None, W_regularizer=None, b_regularizer=None,
activity_regularizer=None, W_constraint=None, b_constraint=None, bias=True, input_dim=None)
output_dim:输出数据的维度、init:初始化该层权重的方法、activation:该层的激活函数
weights:numpy array的list。该list应含有一个形如(input_dim,output_dim)的权重矩阵和一个形如(output_dim,)的偏置向量
regularizer:正则项,w为权重的、b为偏执的,activity为输出的
constraints:约束项
bias:是否包含偏执向量,是布尔值
input_dim:输入数据的维度
5.3舍弃层(Dropout)
在神经网络训练过程中,为了缓解过拟合,将隐藏层的的一部分神经元按照一定的概率暂时断开,在神经元使用时恢复连接。
5.4递归层(Recurrent)
递归层包含三种模型:LSTM、GRU和SimpleRNN
5.5嵌入层(Embedding)
keras.layers.embeddings.Embedding(input_dim, output_dim, init=‘uniform’, input_length=None, W_regularizer=None, activity_regularizer=None, W_constraint=None, mask_zero=False, weights=None, dropout=0.0)
只能作为模型第一层
mask_zero:布尔值,确定是否将输入中的‘0’看作是应该被忽略的‘填充’(padding)值,该参数在使用递归层处理变长输入时有用。设置为True的话,模型中后续的层必须都支持masking,否则会抛出异常
5.6模型(model)
model层是最主要的模块,model层可以将上面定义的各种基本组件组合起来。
model的方法:
model.summary() : 打印出模型概况
model.get_config() :返回包含模型配置信息的Python字典
model.get_weights():返回模型权重张量的列表,类型为numpy array
model.set_weights():从numpy array里将权重载入给模型
model.to_json:返回代表模型的JSON字符串,仅包含网络结构,不包含权值。可以从JSON字符串中重构原模型
model.to_yaml:与model.to_json类似,同样可以从产生的YAML字符串中重构模型
model.save_weights(filepath):将模型权重保存到指定路径,文件类型是HDF5(后缀是.h5)
model.load_weights(filepath, by_name=False):从HDF5文件中加载权重到当前模型中, 默认情况下模型的结构将保持不变。如果想将权重载入不同的模型(有些层相同)中,则设置by_name=True,只有名字匹配的层才会载入权重。
keras有两种模型,分别是Sequential模型和泛型模型
5.6.1Sequential模型
Sequential是多个网络层的线性堆叠,可以通过向Sequential模型传递一个layer的list来构造该模型,也可以通过.add()方法一个个的将layer加入模型中
5.6.2 泛型模型
Keras泛型模型接口是:用户定义多输出模型、非循环有向模型或具有共享层的模型等复杂模型的途径。
适用于实现:全连接网络和多输入多输出模型。
5.6.3训练和评估
构建好模型后,通过调用 compile 方法配置该模型的学习流程
model.compile(optimizer= , loss=’ ', metrics= )
optimizer:此对象会指定训练过程,从 tf.train 模块向其传递优化器实例;loss:要在优化期间最小化的函数;metrics:用于监控训练,它们是 tf.keras.metrics 模块中的字符串名称或可调用对象。

二、Adam优化器参数设置:

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值